如何使用pycrypto执行河豚解密

时间:2018-10-22 10:20:40

标签: python encryption pycrypto

你好,我正在尝试使用 pycrypto

进行BlowFish加密/解密

这是我的示例代码文件,解密数据时加密效果很好

它只是打印:

 Hello 8g

代替this

这是 BlowFIsh加密 Decryption 的完整示例代码,不确定我需要添加什么填充,我知道BlowFISH具有一个固定的数据块大小为8个字节,其键的长度可以在 32到448位(4到56字节)之间变化。

from Crypto.Cipher import Blowfish
from Crypto import Random
from struct import pack
bs = Blowfish.block_size
import os


encryptedpass = "myverystrongpassword"
plaintextMessage = "Hello 8gwifi.org"

iv = os.urandom(Blowfish.block_size)
bs = Blowfish.block_size


# ENcryption
cipher = Blowfish.new(encryptedpass, Blowfish.MODE_CBC, iv)
plen = bs - divmod(len(plaintextMessage),bs)[1]
padding = [plen]*plen
padding = pack('b'*plen, *padding)
ct = iv + cipher.encrypt(plaintextMessage + padding)


#Decryption
cipher = Blowfish.new(encryptedpass, Blowfish.MODE_CBC, iv)
msg = cipher.decrypt(ct[bs:])

print msg

1 个答案:

答案 0 :(得分:0)

解密后您未能删除填充。您的填充是8个字节的ASCII字符“ \ x08”,也称为退格字符。当您将其打印时,终端机会按照应有的方式“退格”,并删除了之前的8个字符“ wifi.org”。