Python AES密钥的内容是否重要?
我一直在寻找和AES密钥生成算法,稍微关心我的密钥是什么,更关心的是,是否有“强”和“弱”密钥 发现了一篇python文章,明确指出在生成密钥时不使用类似的算法:Python AES密钥的内容是否重要?,python,encryption,random,aes,entropy,Python,Encryption,Random,Aes,Entropy,我一直在寻找和AES密钥生成算法,稍微关心我的密钥是什么,更关心的是,是否有“强”和“弱”密钥 发现了一篇python文章,明确指出在生成密钥时不使用类似的算法: import random key = [] for x in range(16): key.append(chr(random.randrange(0,255))) return key 我认为密钥不应该是可预测的,并且我知道基于时间的正常“随机”字节生成并不完全是随机的 然而,我的问题是,即使您对密钥使用了一个简单的算
import random
key = []
for x in range(16):
key.append(chr(random.randrange(0,255)))
return key
我认为密钥不应该是可预测的,并且我知道基于时间的正常“随机”字节生成并不完全是随机的
然而,我的问题是,即使您对密钥使用了一个简单的算法(或16字节的密码短语),并且AES得到了正确的实现,密钥是否比其他任何密钥都弱?AES本身没有任何弱密钥。弱密钥是将带来分组密码特殊性质的密钥。例如,弱密钥可能是密钥,使用该密钥进行双重加密将再次生成明文。但是,弱密钥的定义不是您正在使用的定义 当然,猜测时间是一个现实的选择,随机数生成器可以在该时间内播种,这样就可以重新生成密钥。所以这肯定不强。如果随机数生成任何其他数据,则攻击者还可以计算以前的状态,包括生成密钥的状态。这不是个好主意 任何对称密码都要求密钥完全不可预测。这不仅仅意味着它们很难猜测;他们应该是不可能猜到的。否则,密钥的安全强度将无法满足。例如,如果使用16个完全随机的十六进制字符而不是字节作为密钥,则密钥大小将减少一半,只剩下64位而不是128位 密码也有同样的问题。不幸的是,人类提供的密码非常脆弱。这就是为什么我们在基于密码的密钥派生函数或PBKDF中使用密钥拉伸等技巧来加强基于密码的加密或PBE 因此,是的,密钥比由完全随机字节组成的密钥要弱,因为攻击者更容易猜到它。这基本上与所使用的(分组)密码无关 键的内容肯定很重要