如何从url加密video并将加密video保存到设备的SD卡

在我的应用程序中,我必须使用许多video文件。 所有video的大约总大小为500 MB。 所以我必须在第一次安装应用程序时决定并运行该应用程序我在后台下载video,并在加密后将该video保存到设备的SD卡中。 当使用video时,我解密该video并使用它。

我决定这是因为所有video文件都非常重要,所以该文件的安全性非常重要。

我非常努力地找到如何加密video并将其保存到SD卡…

最后有一件事我发现我放在下面但在这段代码中出现了错误PERMISSION DENIED。

码:

public class VideoActivity extends Activity { VideoView video_view; MediaController m_controller; MediaPlayer mplayer; String[] a = {"1","2","3","4","5","6"}; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); try { main(a); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void writeToFile(String filename, Object object) throws Exception { FileOutputStream fos = null; ObjectOutputStream oos = null; try { fos = new FileOutputStream(new File(Environment.getExternalStorageDirectory()+"/corebird1.mp4")); oos = new ObjectOutputStream(fos); oos.writeObject(object); oos.flush(); } catch (Exception e) { e.printStackTrace(); } finally { if (oos != null) { oos.close(); } if (fos != null) { fos.close(); } } } public void main(String[] args) throws Exception { // // Generating a temporary key and stire it in a file. // SecretKey key = KeyGenerator.getInstance("DES").generateKey(); writeToFile("secretkey.dat", key); Log.d("#######key", String.valueOf(key)); // // Preparing Cipher object for encryption. // Cipher cipher = Cipher.getInstance("DES"); cipher.init(Cipher.ENCRYPT_MODE, key); // // Here we seal (encrypt) a simple string message (a string object). // SealedObject sealedObject = new SealedObject("THIS IS A SECRET MESSAGE!", cipher); // // Write the object out as a binary file. // writeToFile("sealed.dat", sealedObject); } } 

logcat的:

 08-10 12:22:32.430: WARN/System.err(338): java.io.FileNotFoundException: /mnt/sdcard/corebird1.mp4 (Permission denied) 08-10 12:22:32.430: WARN/System.err(338): at org.apache.harmony.luni.platform.OSFileSystem.openImpl(Native Method) 08-10 12:22:32.459: WARN/System.err(338): at org.apache.harmony.luni.platform.OSFileSystem.open(OSFileSystem.java:152) 08-10 12:22:32.459: WARN/System.err(338): at java.io.FileOutputStream.(FileOutputStream.java:97) 08-10 12:22:32.459: WARN/System.err(338): at java.io.FileOutputStream.(FileOutputStream.java:69) 08-10 12:22:32.459: WARN/System.err(338): at com.technosoft.video.VideoActivity.writeToFile(VideoActivity.java:71) 08-10 12:22:32.459: WARN/System.err(338): at com.technosoft.video.VideoActivity.main(VideoActivity.java:99) 08-10 12:22:32.459: WARN/System.err(338): at com.technosoft.video.VideoActivity.onCreate(VideoActivity.java:54) 08-10 12:22:32.459: WARN/System.err(338): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 08-10 12:22:32.459: WARN/System.err(338): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 08-10 12:22:32.459: WARN/System.err(338): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 08-10 12:22:32.470: WARN/System.err(338): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 08-10 12:22:32.470: WARN/System.err(338): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 08-10 12:22:32.470: WARN/System.err(338): at android.os.Handler.dispatchMessage(Handler.java:99) 08-10 12:22:32.470: WARN/System.err(338): at android.os.Looper.loop(Looper.java:123) 08-10 12:22:32.470: WARN/System.err(338): at android.app.ActivityThread.main(ActivityThread.java:4627) 08-10 12:22:32.470: WARN/System.err(338): at java.lang.reflect.Method.invokeNative(Native Method) 08-10 12:22:32.470: WARN/System.err(338): at java.lang.reflect.Method.invoke(Method.java:521) 08-10 12:22:32.480: WARN/System.err(338): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 08-10 12:22:32.480: WARN/System.err(338): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 08-10 12:22:32.480: WARN/System.err(338): at dalvik.system.NativeStart.main(Native Method) 08-10 12:22:32.480: DEBUG/#######key(338): javax.crypto.spec.SecretKeySpec@69 08-10 12:22:32.510: WARN/System.err(338): java.io.FileNotFoundException: /mnt/sdcard/corebird1.mp4 (Permission denied) 08-10 12:22:32.510: WARN/System.err(338): at org.apache.harmony.luni.platform.OSFileSystem.openImpl(Native Method) 08-10 12:22:32.520: WARN/System.err(338): at org.apache.harmony.luni.platform.OSFileSystem.open(OSFileSystem.java:152) 08-10 12:22:32.520: WARN/System.err(338): at java.io.FileOutputStream.(FileOutputStream.java:97) 08-10 12:22:32.520: WARN/System.err(338): at java.io.FileOutputStream.(FileOutputStream.java:69) 08-10 12:22:32.520: WARN/System.err(338): at com.technosoft.video.VideoActivity.writeToFile(VideoActivity.java:71) 08-10 12:22:32.520: WARN/System.err(338): at com.technosoft.video.VideoActivity.main(VideoActivity.java:116) 08-10 12:22:32.520: WARN/System.err(338): at com.technosoft.video.VideoActivity.onCreate(VideoActivity.java:54) 08-10 12:22:32.520: WARN/System.err(338): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 08-10 12:22:32.520: WARN/System.err(338): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 08-10 12:22:32.520: WARN/System.err(338): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 08-10 12:22:32.520: WARN/System.err(338): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 08-10 12:22:32.520: WARN/System.err(338): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 08-10 12:22:32.520: WARN/System.err(338): at android.os.Handler.dispatchMessage(Handler.java:99) 08-10 12:22:32.520: WARN/System.err(338): at android.os.Looper.loop(Looper.java:123) 08-10 12:22:32.520: WARN/System.err(338): at android.app.ActivityThread.main(ActivityThread.java:4627) 08-10 12:22:32.520: WARN/System.err(338): at java.lang.reflect.Method.invokeNative(Native Method) 08-10 12:22:32.520: WARN/System.err(338): at java.lang.reflect.Method.invoke(Method.java:521) 08-10 12:22:32.530: WARN/System.err(338): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 08-10 12:22:32.530: WARN/System.err(338): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 08-10 12:22:32.530: WARN/System.err(338): at dalvik.system.NativeStart.main(Native Method) 

任何机构都有这个错误的解决方案,请帮帮我…

或者如果你有任何其他解决方案或建议,那么你也可以帮助…我很感激……

我也想要解密编码video的方法并播放那个android。

任何身体都有其他

您看到的错误与加密无关,而与文件权限有关。 您的应用是否请求使用SD卡的权限?

其次,为什么DES? 在现代硬件上,DES通常比AES慢很多,而且键的尺寸太短,不适合现代使用。 此外,请确保您使用的是GCM,CTR或CBC操作模式 – 简单的ECB没有良好的安全属性。

确实意识到您正在实施经典的DRM方案:任何有权访问设备和应用程序专用目录的人都能够找到密钥文件并解密video,或者窃取传输中的video。