因为项目需要,最近学习了一下 AES 加密算法,并分别用 C++ 和 Java 实现了这个算法。用 Java 实现是因为在 Android 项目上,需要对视频文件进行 AES 加密解密,用 C++ 实现是因为服务器需要对被加密过的视频进行解密。
对视频文件进行加密解密的规则非常简单,加密时以 byte[] 的形式读取视频文件开头的一小段数据,一般 256byte 就足够了,然后对这个 byte[] 进行 AES 加密,把得到的密文替换到视频文件开头的 256byte 就可以了。因为视频文件的头被加密了,所以播放器是无法进行解码的,导致了文件无法被播放。因为视频文件中的相关媒体信息就保存在头里,头被加密了,也就无法对视频文件进行其它相关操作(如获取媒体长度,提取某一位置的视频帧,视频截取等所有相关操作)。当要播放这个文件的时候,再调用 AES 解密算法,把被加密的 256byte 解密出来,替换回去,视频文件就可以正常解码,可以正常播放了,在播放完成后,又重新加密。这样,就完成了对视频文件的 AES 加密和解密操作了。
AES 的全称是Advanced Encryption Standard,是最流行的对称加密算法,当然也可以叫做加
密规范。
AES 算法是对称加密算法ÿ

本文介绍了使用AES对称加密算法对视频文件进行加密解密的方法,分别提供了Java和C++的实现。通过加密视频文件的头部,使得文件无法播放,解密后恢复正常。文章讨论了AES算法的工作原理,强调了其安全性,并分享了在项目中如何判断文件是否已被加密,防止重复操作导致文件损坏的解决方案。
订阅专栏 解锁全文

456

被折叠的 条评论
为什么被折叠?



