android实现视频的加密和解密(使用AES)
发布时间 - 2026-01-11 01:13:55 点击率:次java语言进行加密解密速度挺慢的。。一个6MB左右的文件需要10多秒。。。等有空了瞅瞅ffmpeg去。。

MainActivity.java
/**
* 视频加密/解密
*
* @author oldfeel
*
* Created on: 2014-2-17
*/
public class MainActivity extends Activity {
// 原文件
private static final String filePath = "/sdcard/DCIM/Camera/VID_20140217_144346.mp4";
// 加密后的文件
private static final String outPath = "/sdcard/DCIM/Camera/encrypt.mp4";
// 加密再解密后的文件
private static final String inPath = "/sdcard/DCIM/Camera/decrypt.mp4";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button encryptButton = (Button) findViewById(R.id.main_encrypt);
Button DecryptButton = (Button) findViewById(R.id.main_decrypt);
encryptButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try {
encrypt();
Toast.makeText(getApplicationContext(), "加密完成",
Toast.LENGTH_SHORT).show();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
DecryptButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try {
decrypt();
Toast.makeText(getApplicationContext(), "解密完成",
Toast.LENGTH_SHORT).show();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
/**
* Here is Both function for encrypt and decrypt file in Sdcard folder. we
* can not lock folder but we can encrypt file using AES in Android, it may
* help you.
*
* @throws IOException
* @throws NoSuchAlgorithmException
* @throws NoSuchPaddingException
* @throws InvalidKeyException
*/
static void encrypt() throws IOException, NoSuchAlgorithmException,
NoSuchPaddingException, InvalidKeyException {
// Here you read the cleartext.
FileInputStream fis = new FileInputStream(filePath);
// This stream write the encrypted text. This stream will be wrapped by
// another stream.
FileOutputStream fos = new FileOutputStream(outPath);
// Length is 16 byte
SecretKeySpec sks = new SecretKeySpec("MyDifficultPassw".getBytes(),
"AES");
// Create cipher
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, sks);
// Wrap the output stream
CipherOutputStream cos = new CipherOutputStream(fos, cipher);
// Write bytes
int b;
byte[] d = new byte[8];
while ((b = fis.read(d)) != -1) {
cos.write(d, 0, b);
}
// Flush and close streams.
cos.flush();
cos.close();
fis.close();
}
static void decrypt() throws IOException, NoSuchAlgorithmException,
NoSuchPaddingException, InvalidKeyException {
FileInputStream fis = new FileInputStream(outPath);
FileOutputStream fos = new FileOutputStream(inPath);
SecretKeySpec sks = new SecretKeySpec("oldfeelwasverynb".getBytes(),
"AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, sks);
CipherInputStream cis = new CipherInputStream(fis, cipher);
int b;
byte[] d = new byte[8];
while ((b = cis.read(d)) != -1) {
fos.write(d, 0, b);
}
fos.flush();
fos.close();
cis.close();
}
}
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <Button android:id="@+id/main_encrypt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="147dp" android:text="Encrypt" /> <Button android:id="@+id/main_decrypt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/main_encrypt" android:layout_centerVertical="true" android:text="Decrypt" /> </RelativeLayout>
AndroidManifest.xml要添加读取sd的权限
复制代码 代码如下:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# android
# 视频加密解密
# aes加密解密
# Android加密之全盘加密详解
# Android常用的数据加密方式代码详解
# Android数据传输中的参数加密代码示例
# 详解Android端与JavaWeb传输加密(DES+RSA)
# Android使用RSA加密和解密的示例代码
# Android 客户端RSA加密的实现方法
# android使用AES加密和解密文件实例代码
# Android md5加密与php md5加密一致详解
# 详解Android安全防护之加密算法
# 大家多多
# 空了
# 加密解密
# onClick
# OnClickListener
# main_decrypt
# setOnClickListener
# View
# getApplicationContext
# LENGTH_SHORT
# Toast
# makeText
# activity_main
# Button
# setContentView
# layout
# encryptButton
# main_encrypt
# DecryptButton
# findViewById
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案
Bootstrap整体框架之CSS12栅格系统
Laravel如何使用Vite进行前端资源打包?(配置示例)
Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程
Laravel如何使用Eloquent进行子查询
百度浏览器网页无法复制文字怎么办 百度浏览器复制修复
宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程
Laravel如何自定义分页视图?(Pagination示例)
Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧
如何基于云服务器快速搭建网站及云盘系统?
如何快速搭建高效香港服务器网站?
详解CentOS6.5 安装 MySQL5.1.71的方法
详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
无锡营销型网站制作公司,无锡网选车牌流程?
HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】
Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道
Linux安全能力提升路径_长期防护思维说明【指导】
Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】
JavaScript如何实现音频处理_Web Audio API如何工作?
Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】
MySQL查询结果复制到新表的方法(更新、插入)
如何在自有机房高效搭建专业网站?
Linux后台任务运行方法_nohup与&使用技巧【技巧】
Laravel如何为API编写文档_Laravel API文档生成与维护方法
html如何与html链接_实现多个HTML页面互相链接【互相】
Laravel如何与Pusher实现实时通信?(WebSocket示例)
Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】
nginx修改上传文件大小限制的方法
微信小程序 canvas开发实例及注意事项
大连 网站制作,大连天途有线官网?
如何做网站制作流程,*游戏网站怎么搭建?
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】
Python文件异常处理策略_健壮性说明【指导】
Laravel如何处理文件下载请求?(Response示例)
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区
如何在腾讯云服务器上快速搭建个人网站?
佛山企业网站制作公司有哪些,沟通100网上服务官网?
Python自动化办公教程_ExcelWordPDF批量处理案例
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
如何在万网利用已有域名快速建站?
Laravel怎么解决跨域问题_Laravel配置CORS跨域访问
laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法
焦点电影公司作品,电影焦点结局是什么?
猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】
如何用西部建站助手快速创建专业网站?
Laravel distinct去重查询_Laravel Eloquent去重方法
Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】
如何在建站之星网店版论坛获取技术支持?

