你好,我正在尝试使用 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
答案 0 :(得分:0)
解密后您未能删除填充。您的填充是8个字节的ASCII字符“ \ x08”,也称为退格字符。当您将其打印时,终端机会按照应有的方式“退格”,并删除了之前的8个字符“ wifi.org”。