使用 AES 對稱加密算法對視頻文件進行加密解密(C++ 及 Java 實現)

因爲項目需要,最近學習了一下 AES 加密算法,並分別用 C++ 和 Java 實現了這個算法。用 Java 實現是因爲在 Android 項目上,需要對視頻文件進行 AES 加密解密,用 C++ 實現是因爲服務器需要對被加密過的視頻進行解密。

對視頻文件進行加密解密的規則非常簡單,加密時以 byte[] 的形式讀取視頻文件開頭的一小段數據,一般 256byte 就足夠了,然後對這個 byte[] 進行 AES 加密,把得到的密文替換到視頻文件開頭的 256byte 就可以了。因爲視頻文件的頭被加密了,所以播放器是無法進行解碼的,導致了文件無法被播放。因爲視頻文件中的相關媒體信息就保存在頭裏,頭被加密了,也就無法對視頻文件進行其它相關操作(如獲取媒體長度,提取某一位置的視頻幀,視頻截取等所有相關操作)。當要播放這個文件的時候,再調用 AES 解密算法,把被加密的 256byte 解密出來,替換回去,視頻文件就可以正常解碼,可以正常播放了,在播放完成後,又重新加密。這樣,就完成了對視頻文件的 AES 加密和解密操作了。

 

AES 的全稱是Advanced Encryption Standard,是最流行的對稱加密算法,當然也可以叫做加

密規範。

 

AES 算法是對稱加密算法,也就是說加密和解密都是採用同一個的密鑰。

AES 加密的時候,會把文件切分成一個個的小塊進行加密, 每個塊是128位,也就是16個字節。如

果文件大小不是16字節的整數倍,那就要在末尾添加一些數據湊夠。每個塊都會被單獨進行加

加密,AES 算法會有兩個輸入一個輸出。輸入是密鑰和文件內容,輸出是密文。解密時候會

把密文和密鑰所輸入,輸出就是文件原文。

實際加密和解密過程都分成好幾個步驟,過程比較複雜的,並不是把原文和密鑰做一個異或那麼簡

單。

 

密鑰長度可能是128位或者更長,當然密鑰越長就越安全,加解密的速度也就越慢。AES 算法最早在1998年發佈的,歷史上還沒有任何人破解過AES加密過的數據,所以說 AES 算法是非常的安全的。

AES是當前最爲

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章