繁体   English   中英

RijndaelManaged密钥长度是否与AES [key length]相同?

[英]Is RijndaelManaged key length the same as AES[key length]?

RijndaelManaged是一种算法,而AES是标准算法。 当提到AES256时,这是否意味着我与RijndaelManaged一起使用的密钥长度必须为256个字符?

如果我有这样的钥匙:

key = "mytestkey";

只有9个字符,这表示我正在使用AES9吗?

Aes / Rijndael密钥大小以位为单位,而不是字符; AES256使用256位密钥。 您必须给它一个正好为256位的密钥。 AES标准和Rijndael仅接受128、192或256位的密钥大小。

您不应该互换AES和Rijndael。 AES标准源自Rijndael,但它们并不完全相同。 如果您希望使用AES,请对所有操作使用AES; 如果您想使用Rijndael,请对所有操作使用Rijndael。

"mytestkey"不能直接是AES256的密钥,也不可以是类似的Rijndael模式。 它不是256位长。 为了将其用作键,您必须将其转换为256位长的字节块。

如果您使用的是密码,一种典型的方法是使用PBKDF2Scrypt之类的哈希算法进行密钥扩展 PBKDF代表“基于密码的密钥派生功能”,它基本上就是您要做的-从密码派生密钥。

从理论上讲,您也可以使用SHA256(始终具有256位输出)对密码进行哈希处理,并使用该256位块作为AES的密钥; 从安全角度来看,这样做是不明智的,因为预先计算密码的SHA哈希值相对容易。

请记住,如果您使用的密码熵很少,那么加密的安全性就会受到影响-有人猜测密钥可能需要很短的时间。 "mytestkey"最多具有"mytestkey"位熵-您仅使用小写字母,因此每个位置26个值,并且有9个位置(9个字符)。 因此,理论上需要存储的位数是log_2( 26^9 ) = 42.3 在这种情况下,您将使用仅具有约42位熵的密钥的AES256。

我应该注意,从安全角度来看,此处提供的建议对于如何将密码转换为密钥不完整。 如果您想更好地了解如何从密码正确生成密钥,建议您从一些阅读资料开始,例如owasp.org上的密码存储备忘单。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM