AES算法输入和输出限制

cpp*_*dev 4 aes

我想在我的应用程序中使用AES加密.我遇到过aes算法的一些开源实现.通过查看它们,我对以下参数感到困惑:

  1. AES密钥长度.提到密钥长度应为128,192或256字节.如果我的密钥只是五位数,即23467,该怎么办?

  2. AES明文长度:对aes明文长度有什么限制吗?

  3. AES输出:如果我的密钥长度为5位且纯文本为10个字符,则aes输出字符串的最小大小是多少.

谁能帮我?

Ped*_*ino 9

AES密钥长度.提到密钥长度应为128,192或256位.如果我的密钥只是五位数,即23467,该怎么办?

看起来你正在考虑将密钥作为各种密码.事实并非如此.加密密钥并不意味着要记住.它是一长串随机生成的字节,应存储在安全的地方.

但是,您可以从密码派生加密密钥,例如使用哈希函数.在这种情况下,您输入234567并使用生成的摘要作为键.但是,这会带来一些安全隐患,因为它会使您的密钥易受字典和彩虹表攻击.查找"基于密码的加密",了解如何安全地处理此问题; 特别是,看看RFC2898中描述的PBKDF2.

AES明文长度:对aes明文长度有什么限制吗?

AES是分组密码,是加密系统的基础构建块.它本身只能加密单个数据块(16个字节),因此密码学家创建了几种"操作模式",使我们能够加密任意长度的明文.CTR是一个很好的操作模式示例,不需要任何填充,可以并行化.

AES输出:如果我的密钥长度为5位且纯文本为10个字符,则aes输出字符串的最小大小是多少.

这完全取决于操作模式.在您的情况下,它可能是10(当不需要填充时,例如CTR)或16(对于基于块的模式,如CBC).