您好,我正在尝试使用pycrypto执行BlowFish 加密/解密
这是我的示例代码文件,解密数据时加密效果很好
它只是打印:
Hello 8g
而不是这个
这是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
解密后无法删除填充。填充是 ASCII 字符"\x08"的 8 个字节,也称为退格字符。当您打印它时,您的终端尽职尽责地"退格"并删除了前面的 8 个字符,即"wifi.org"。