Encryption

圖像加密的 AES 實現

  • March 18, 2021

我一直在鑽研密碼學的樂趣,並嘗試使用圖像加密實現 AES 的視覺化。到目前為止,將每個像素的 RGB 值表示為十六進制數字,然後將其拆分為 16 個字元串的數組。我知道 AES 是一個分組密碼,所以我必須將它們分成 16 個字元的字元串,但是當字元串少於 16 個字元時我應該如何處理呢?我聽說我應該填充它並添加更多字元以使其適合 16 個字元,但我不確定這是否正確,因為填充的字元不會在最終圖像中表示,並且能夠解密。

注意事項:請注意,絕大多數使用電腦(而不是使用本質上的光學手段)討論“圖像加密”的文章都是垃圾科學。我不知道任何標題中帶有“圖像加密”和“AES”的文章(就像問題一樣)值得研究(如果我錯過了,我歡迎評論中的連結)。

使用 AES 加密數字化圖像(而不是其他類型的數字數據)不需要特殊的加密或預處理。對於其他類型的數字數據,必須在加密前進行壓縮(如果使用),在解密後進行解壓縮;然後應該檢查加密不隱藏加密內容的長度這一事實的後果。


明文(加密的內容)通過十六進制(一種將 4 位編碼為一個字元的表示系統)沒有充分的理由:與使用原始字節相比,這通常會加倍大小。十六進制是一種讓眼睛看到原始字節的方式,或者將密文(加密的結果)表示為文本(即使有更好的編碼),但它不應該是明文轉換為加密的方式的一部分。

了解 AES - CTR(或 AES- OFB,儘管它並不常見),它可以讓您加密數據而無需費心形成 16 字節塊(這兩種模式避免了填充的需要;另一方面,這是必要的對於ECB,一種以糟糕而臭名昭著的操作模式,尤其是對於高度冗餘的明文,包括未壓縮的圖像)。

然後了解身份驗證加密,這是使用對稱密鑰保護數據機密性和完整性的現代方式。範例包括 AES - GCM ( -SIV )。

引用自:https://crypto.stackexchange.com/questions/88896