python3des没有输出正确的答案。你知道吗
import pyDes
import binascii
text = '111122223333AAAA44446666BBBBEEEE'
binaryText = binascii.unhexlify(text)
key = '123412341234ABCD'
k = pyDes.triple_des(key, pyDes.ECB)
encrypted = k.encrypt(binaryText)
print("Encrypted Value = %r" % binascii.hexlify(encrypted))
# decrypted = k.decrypt(encrypted)
# print("Decrypted Value = %r" %binascii.hexlify(decrypted))
加密值应为:569F2551E1749FEE9221B20C4F76CD4B
代码中有两个原因导致结果不同:
指定为十六进制字符串的键不会转换为其二进制表示形式。
使用了错误的密钥大小:TDES基于DES并使用了三个DES密钥K1、K2、K3。它执行三轮DES:第一轮用K1加密,第二轮用K2解密,最后第三轮用K3加密。支持三个keying options:3TDEA是最强的变体,使用三个独立的DES键。2TDEA使用两个独立的键K3=K1。1TDEA使用三个相同的密钥K3=K2=K1,因此它被简化为DES,并且DES的安全性是最不安全的变体。你知道吗
在Web Site上,使用键
123412341234ABCD
意味着1TDEA。^另一边的{a5}只显式支持2TDEA和3TDEA,但不支持1TDEA,因为只允许16字节和24字节的键。但是1TDEA可以通过使用键123412341234ABCD123412341234ABCD
或123412341234ABCD123412341234ABCD123412341234ABCD
来实现。因此Python代码提供了网站的结果
必须替换为
请注意,代码在几个方面是不安全的:首先,1TDEA实际上具有DES的优势,因此是不安全的。即使TDES与3TDEA变体一起使用(安全性与AES相当),也应该使用性能更高的AES。其次,ECB模式是不安全的。你知道吗
相关问题 更多 >
编程相关推荐