您好我正在尝试使用pycrypto执行BlowFish加密/解密

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

它只是打印:

 Hello 8g


代替this

这是BlowFIsh加密和解密的完整示例代码,不确定我需要添加什么填充,我知道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

最佳答案

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

09-15 21:02