2015-12-03 117 views
2

我正在使用pycrypto模塊生成密文。問題是生成的密文不能保存在某個地方,因爲它不是人類可讀的。如何將十六進制字符串再次轉換爲密文解密

>>> a=AES.new("123456789") 
    >>> m='aaaabbbbccccdddd' 
    >>> a.encrypt(m) 
    'H\xe7\[email protected]\xe0\x13\xe0M\xc32\xce\[email protected]\xb2B\xd0' 

我想在我的數據庫保存該加密的消息,現在我不能這樣做,因爲它不是人類可讀的。我可以通過轉換爲十六進制編碼保存數據:

a.encrypto(m).encode('hex') 

和生成的十六進制代碼,並將其保存我的數據庫。問題是我如何將這個encrypted hex code轉換回相同的形式進行解密?任何人都可以幫助我嗎?

我的用戶將從數據庫訪問加密的消息,解密它,然後檢查消息的完整性!任何人都可以幫助我將十六進制代碼轉換回密文?

回答

0

問題解決! :)

您可以使用base64.b64encode(cipher_text)將您的數據保存到數據庫,然後base64.b64decode(instance.encrypted_message)來檢索數據。該解決方案正在爲我工​​作。

您還需要import base64

1

做反向 - 使用hex解碼:

>>> encrypted = 'H\xe7\[email protected]\xe0\x13\xe0M\xc32\xce\[email protected]\xb2B\xd0' 
>>> encoded = encrypted.encode('hex') 
>>> decoded = encoded.decode('hex') 
>>> encrypted == decoded 
True 
+0

我用'base64.b64encode(cipher_text)'和'base64.b64decode(instance.encrypted_message)'解碼和編碼我的數據,它爲我工作。 – python

+0

我接受你的答案,它也會工作:) – python

相關問題