2014-04-23 169 views
0

如何使用8字節十六進制密鑰使用DES算法在python中加密和解密十六進制文本?DES使用十六進制密鑰python的加密和解密十六進制

我有一個十六進制文本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) 
+0

你是什麼意思的「等效字符串?」 –

+0

@ RobWatts它與0x97等價於'a' – ceasif

+0

您是使用自己選擇的密鑰還是來自其他地方的密鑰? –

回答

0

要在您的示例使用兩個密鑰,爲它們分配是這樣的:

key1 = '\x46\xb2\xc8\xb6\x28\x18\xf8\x84' 

key2 = '\x4a\x5a\xa8\xd0\xba\x30\x58\x5a' 

這將使密鑰保持在每個8字節,允許您在DES.new中使用它們。