Encryption

長字元串最短密文加密算法

  • December 19, 2020

編輯:

我最初的問題是,如果我必須加密大量數據,AES 會進一步擴展數據,但事實並非如此。這個問題表明 AES 根本不擴展數據。

原始問題:

我有一個數據 URI列表,其中包含我需要加密並保存到文件中的圖像數據。平均而言,我需要保存的數據 URI 長度為數千個字元,並且可能會變得更長,具體取決於我如何配置我的系統。目前,我正在使用 AES 加密算法。

哪種加密算法可以為這種長度的字元串提供最短的密文?

最短密文的一般方法是

  1. 壓縮$$ but see cautionary note $$,也許使用通用無損壓縮,例如(在許多中)DeflateLZFSE;或一些上下文感知壓縮。
  2. 加密,使用經過身份驗證的加密,例如(其中許多)AES(-256)-GCM-SIV
  3. 如果上下文需要,請重新格式化以適應要求,例如Base64

解密以相反的順序撤消每一層。使用經過身份驗證的加密或(最好是和)強大的解壓縮器來避免各種攻擊或在解密無效密文或解密密鑰時崩潰是至關重要的。

對於“長度為數千個字元**的數據 URI 列表” ,我猜第 1 步中的壓縮會減少 1/4 以上的大小。它可以超過第 2 步中的(小、恆定)擴展,以及第 3 步中 Base64 的 ≈1/3 擴展。

注意:通過壓縮,密文的大小將揭示明文的大小和可壓縮性,而通常加密僅顯示大小。眾所周知,這在某些情況下是一個問題(包括數字化語音)。需要了解 URI 的性質以及其中的機密內容,以確定這是否是一個問題。如有疑問,請勿壓縮。

注意:如果大小是最重要的,並且用相同的密鑰加密相同的數據總是產生相同的密文不是問題(或者,如果需要的話),那麼使用常量是安全的(例如 all-零和隱式)使用上述 AES-GCM-SIV 進行身份驗證的加密中的初始化向量。

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