如何对 url 中的视频进行加密并将加密视频保存到设备的 SD 卡

2023-12-28

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

我决定这样做是因为所有视频文件都非常重要,因此该文件的安全性非常重要。

我非常努力地寻找如何加密视频并将其保存到 SD 卡...

最后我发现我把一件事放在下面,但在此代码中发生了权限被拒绝的错误。

Code:

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.<init>(FileOutputStream.java:97)
08-10 12:22:32.459: WARN/System.err(338):     at java.io.FileOutputStream.<init>(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.<init>(FileOutputStream.java:97)
08-10 12:22:32.520: WARN/System.err(338):     at java.io.FileOutputStream.<init>(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)

任何机构都可以解决此错误,然后请帮助我......

或者如果您有任何其他解决方案或建议,那么您也可以提供帮助...我对此表示感谢...

我还想要解密编码视频并播放 android 的方法。

任何身体都有其他


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

其次,为什么采用 DES?在现代硬件上,DES 通常比 AES 慢得多,并且密钥对于现代使用来说太短。另外,请确保您使用的是 GCM、CTR 或 CBC 操作模式 - 简单的 ECB 不具有良好的安全特性。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何对 url 中的视频进行加密并将加密视频保存到设备的 SD 卡 的相关文章

  • 为什么是 javascript:history.go(-1);无法在移动设备上工作?

    首先 一些背景 我有一个向用户呈现搜索页面 html 表单 的应用程序 填写标准并单击 搜索 按钮后 结果将显示在标准部分下方 在结果列表中 您可以通过单击将您带到新页面的链接来查看单个结果的详细信息 在详细信息页面中 我添加了一个 返回结
  • Java ResultSet 如何检查是否有结果

    结果集 http java sun com j2se 1 4 2 docs api java sql ResultSet html没有 hasNext 方法 我想检查 resultSet 是否有任何值 这是正确的方法吗 if resultS
  • 对于一个单元格,RecyclerView onBindViewHolder 调用次数过多

    我正在将 RecyclerView 与 GridLayoutManager 一起使用 对于网格中的每个项目 我需要调用 REST api 来检索数据 然后 从远程异步获取数据后 我使用 UIL 加载 显示图像 一切似乎都很好 但我发现 on
  • Mipmap 与可绘制文件夹[重复]

    这个问题在这里已经有答案了 我正在使用 Android Studio 1 1 Preview 1 我注意到 当我创建一个新项目时 我得到以下层次结构 不同 DPI 的 Mipmap 文件夹 不再有不同 DPI 的可绘制文件夹 我应该将所有资
  • java for windows 中的文件图标叠加

    我正在尝试像 Tortoise SVN 或 Dropbox 一样在文件和文件夹上实现图标叠加 我在网上查了很多资料 但没有找到Java的解决方案 Can anyone help me with this 很抱歉确认您的担忧 但这无法在 Ja
  • Android 中如何通过彩信发送图片?

    我正在开发多媒体应用程序 我正在通过相机捕获一张图像 并希望将该图像和文本发送到其他号码 但我不知道如何通过彩信发送图像 MMS 只是一个 http post 请求 您应该使用执行请求额外的网络功能 final ConnectivityMa
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • 不接受任何内容也不返回任何内容的函数接口[重复]

    这个问题在这里已经有答案了 JDK中是否有一个标准的函数式接口 不接受也不返回任何内容 我找不到一个 像下面这样 FunctionalInterface interface Action void execute 可运行怎么样 Functi
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • 最新的 Hibernate 和 Derby:无法建立 JDBC 连接

    我正在尝试创建一个使用 Hibernate 连接到 Derby 数据库的准系统项目 我正在使用 Hibernate 和 Derby 的最新版本 但我得到的是通用的Unable to make JDBC Connection error 这是
  • Android:无法使用 DbHelper 和 Contract 类将数据插入 SQLite

    public class Main2Activity extends AppCompatActivity private EditText editText1 editText2 editText3 editText4 private Bu
  • 干净构建 Java 命令行

    我正在使用命令行编译使用 eclipse 编写的项目 如下所示 javac file java 然后运行 java file args here 我将如何运行干净的构建或编译 每当我重新编译时 除非删除所有内容 否则更改不会受到影响 cla
  • 在 Samsung Galaxy S5 Android 5.0 上使用 MediaPlayer 加载音频流需要超过 10 秒

    由于更新至 Android 5 0 MediaPlayer 在 Samsung Galaxy S5 上无法正常工作 启动音频流后加载时间超过 10 秒 示例代码 MediaPlayer mPlayer new MediaPlayer Str
  • 卡片视图 单击卡片移至新活动

    我是 Android 编程新手 正在研究卡片布局 我想知道如何使其可点击 android clickable true android foreground android attr selectableItemBackground 我的卡
  • 在命令行上卸载 Android SDK 的选定部分

    这与 卸载旧的 Android SDK 版本 https stackoverflow com questions 15182377 uninstall old android sdk versions 除非我想在无头 Linux CI 服务
  • 长轮询会冻结浏览器并阻止其他 ajax 请求

    我正在尝试在我的中实现长轮询Spring MVC Web 应用程序 http static springsource org spring docs 2 0 x reference mvc html但在 4 5 个连续 AJAX 请求后它会
  • 使用 CXF-RS 组件时,为什么我们使用 而不是普通的

    作为后续这个问题 https stackoverflow com questions 20598199 对于如何正确使用CXF RS组件我还是有点困惑 我很困惑为什么我们需要
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • 错误:(23, 13) 无法解决:com.google.android.gms:play-services:11.2.0“安装存储库和同步项目”不起作用

    我正在尝试在我的 Android 应用程序中获取位置并更新到服务器 这是我的 Gradle 代码 我在这里包含了compile com google android gms play services 11 2 0 这条线是从文档中 htt
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp

随机推荐

  • Android 中的可扩展列表视图

    我有一个可扩展的 ListView 但我面临两个问题 Q1 如果标题不包含任何子项 我想将其隐藏 从列表中删除 为此 我有内部 getGroupView 方法 if getChildrenCount groupPosition 0 conv
  • 如何在没有任何注释的 Spring 项目中使用 Jackson Json 解析?

    情况 我有一个名为 Errors 的枚举类 它位于一个公共项目中 错误枚举包含一个 int 代码和一个 String 文本 Errors 枚举用于两个不同的项目 一个项目是基于 Spring 的项目 另一个项目是非 Spring J2EE
  • 是否可以在 C++03 中定义等效的“移动和交换习惯用法”

    我有义务C 03我有一个不可复制的对象 例如持有资源 我需要使用移动和交换语义能够做类似的事情并避免复制 MyClass returnMyClass void MyClass temp fill temp members with actu
  • 虚拟地球或谷歌地图

    简单的问题 答案可能不是 我将为客户开发一个 Web 应用程序 ASP NET MVC 他们询问我是否使用 Google 地图或 Virtual Earth 来提供地图解决方案的意见 你会选择哪一个 为什么 或者还有其他可以推荐的吗 还有什
  • 如何从数据帧创建 key:column_name 和 value:python 列中的唯一值的字典

    我正在尝试创建一个键 值对的字典 其中键是数据帧的列名 值将是包含该列中所有唯一值的列表 最终我希望能够从基于条件的字典 到目前为止 这是我能够做的 for col in col list 1 list list append footwe
  • Pytrends 趋势结果与手动下载的数据不相似

    I use pytrends自动下载数据到csv来自谷歌趋势 我使用的代码如下 在本例中 我正在下载 2008 年至今的每月 Google 趋势数据 from pytrends request import TrendReq from ur
  • html 5 canvas 硬件在 android chrome beta 上加速吗?

    我在 Android 浏览器与 chrome beta 上进行了一些 html 5 canvas 测试 结果有利于 Android 默认浏览器 尽管 chrome gpu 显示 canvas 具有硬件加速功能 测试示例 带有 8 个小图像的
  • istream读取失败后

    我有一小段代码来读取用户数据 如下所示 include
  • 在 Java 中,如何录制扬声器的声音输出? [复制]

    这个问题在这里已经有答案了 我有一个 Java 应用程序 它从多个来源接收声音 用户的能力之一是将应用程序中发生的情况记录到 AVI 文件中 我想将声音包含在该视频捕获中 如何录制用户会听到的声音 例如所有声音输入混合在一起的结果 我可以弄
  • 如何确定系统上的 Boost 版本?

    有没有一种快速方法可以确定系统上 Boost C 库的版本 增强信息宏 http www boost org doc libs 1 44 0 libs config doc html boost config boost macro ref
  • Windows ISO 8601 时间戳

    我需要将 Windows PowerShell 中的日期转换为 ISO 8601 格式 在 Linux Unix 中没有问题 TZ 0 date d
  • 从 Android 应用程序向 Azure AD 进行 Firebase 身份验证

    我正在尝试将 Microsoft 登录方法添加到我的 Firebase 项目中 希望允许用户使用其 Azure AD 凭据登录我的 Android 应用程序 我已经完成了使用 电子邮件 密码 提供商的所有设置 该提供商运行良好 我不打算访问
  • 扑动|如何将数据添加到 firestore 中的现有文档

    我正在使用 firestore 来存储我的 flutter 应用程序的数据 并且我创建了一个在用户登录后自动在 firestore 中创建文档的功能 现在我希望用户在填写此表单时 数据将添加到用户电子邮件所在的同一文档中 RaisedBut
  • 为什么节点 contains 方法没有捕获对 svg 元素的点击?

    我有一个基本的模态 其 html 结构中有一个 svg 图标 我想检测模式之外的点击 以便我可以将其关闭 执行此操作的代码类似于以下内容 document addEventListener mousedown e gt if modal c
  • SQLite删除查询错误

    delete N from Tbl Nodes N Data Tree DT WHERE N Part DT Part 对于这个命令我收到以下错误 System Data SQLite SQLiteException SQLite erro
  • 本地网络上的Mysql错误10061

    我正在尝试连接到本地服务器的数据库 位于 192 168 0 198 但我收到 10061 错误 当我尝试连接真正的 putty 然后只是一个普通的 mysql 登录 时 它没有给我带来任何问题 mincraft 插件使用以下命令登录数据库
  • CloudKit错误处理-重试逻辑

    我想在我的应用程序中加入出色的 CloudKit 错误处理功能 就像 Apple 希望我们做的那样 我现在想保存并修改一条记录 这是我的基本保存逻辑 func addNewRecord managedObj NSManagedObject
  • requestIdleCallback 和 setImmediate 之间的区别?

    目前有 2 个不同的 API 旨在将任务分解为预定的回调函数 设置立即 https developer mozilla org en US docs Web API Window setImmediate 非标 请求空闲回调 https d
  • 第一次打开浏览器窗口/选项卡后执行 JavaScript 代码

    有没有一种方法可以在浏览器中的窗口或选项卡打开时仅执行一次 JavaScript 代码 然后在该窗口 选项卡的整个生命周期中不再执行 即使导航离开 一种使用方式window sessionStorage像这样 if window sessi
  • 如何对 url 中的视频进行加密并将加密视频保存到设备的 SD 卡

    在我的应用程序中 我必须使用许多视频文件 所有视频的总大小大约为 500 MB 因此 我必须在第一次安装和运行应用程序时决定我在后台下载视频 并在加密该视频后将其保存到设备的 SD 卡上 当使用视频时 我会解密该视频并使用它 我决定这样做是