使用十六进制密钥在Python中进行DES加密和解密

0 投票
1 回答
3063 浏览
提问于 2025-04-18 03:59

我想知道怎么用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中使用它们了。

撰写回答