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