使用十六进制密钥在Python中进行DES加密和解密
我想知道怎么用8字节的十六进制密钥,在Python中使用DES算法来加密和解密十六进制文本。
我有一个十六进制文本 0x3a3456abcd4ff5cd
,想用十六进制密钥来加密,那么我该怎么把这些值转换成可以用的字符串,以便我能使用现有的库来处理它们呢。
这是我尝试过的,但它把8字节的密钥转换成了13字节的字符串:
from Crypto.Cipher import DES
text =(unichr(4).decode('utf-8')*8).encode('utf-8')
key1=(unichr(0x46)+unichr(0xb2)+unichr(0xc8)+unichr(0xb6)+unichr(0x28)+unichr(0x18)+unichr(0xf8)+unichr(0x84)).encode('utf-8')
key2=(unichr(0x4a)+unichr(0x5a)+unichr(0xa8)+unichr(0xd0)+unichr(0xba)+unichr(0x30)+unichr(0x58)+unichr(0x5a)).encode('utf-8')
des = DES.new(key1,DES.MODE_ECB)
cipher_text = des.encrypt(plain_text)
print 'the cipher text is ', cipher_text
des = DES.new(key2,DES.MODE_ECB)
print 'the decrypted text is: ', des.decrypt(cipher_text)
1 个回答
0
要使用你例子中的这两个密钥,可以这样来设置:
key1 = '\x46\xb2\xc8\xb6\x28\x18\xf8\x84'
key2 = '\x4a\x5a\xa8\xd0\xba\x30\x58\x5a'
这样做会让每个密钥保持在8个字节的大小,这样你就可以在DES.new
中使用它们了。