【发布时间】:2018-09-07 12:51:00
【问题描述】:
我正在尝试从 mirc 解密一些由 FiSH 插件加密的消息。该插件使用河豚加密作为基于密钥的模式 ECB,但首先它将消息加密为 code64,然后使用河豚 ECB。问题是当我在从 base64 解码后尝试使用河豚解密消息时,总是会出现相同的错误。 "ECB模式下数据必须与块边界对齐"
des 加密的消息是:“Probando un mensaje cifrado”
from Crypto.Cipher import Blowfish
from Crypto.Util.Padding import pad, unpad
from os import urandom
import base64
key = b"passw0rd"
text =b"+OK Tnkrh0sIoWb1oS1FT.RQop/.JPXNc.lclFO/gueZ4/ZwN1H0"
decode64 = base64.b64decode(text)
decrypt = Blowfish.new(key,Blowfish.MODE_ECB)
msg = decrypt.decrypt(decode64)
print(msg)
site-packages\Crypto\Cipher\_mode_ecb.py", line 163, in decrypt
raise ValueError("Data must be aligned to block boundary in ECB mode")
ValueError: Data must be aligned to block boundary in ECB mode
WITH NON-STANDARD TABLE:
custom_a = "./0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
standard_a = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
DECODE_TRANS = str.maketrans(custom_a,standard_a)
key = b"passw0rd"
text ="Tnkrh0sIoWb1oS1FT.RQop/.JPXNc.lclFO/gueZ4/ZwN1H0"
decode64 = base64.b64decode(text.translate(DECODE_TRANS))
decrypt = Blowfish.new(key,Blowfish.MODE_ECB)
msg = decrypt.decrypt(decode64)
print(msg)
【问题讨论】:
-
1.不要使用 Blowfish,它不被认为是安全的,使用 AES(高级加密标准),甚至 Blowfish 的创建者也使用 AES。 2. 不要在新作中使用ECB模式,尽快更新旧作,不安全,见ECB mode,向下滚动到企鹅。而是使用带有随机IV的CBC模式,只需在加密数据前加上IV用于解密即可,它不需要保密。
-
我需要使用 Blowfish,因为这是人们在 irc 上使用的方法。我不能用别的。我需要在我的 python 脚本上实现来自 irc 的 Blowfish 插件。
-
在那篇文章中我确实得到了解决方案stackoverflow.com/questions/10303306/…。谢谢大家。
标签: python python-3.x encryption blowfish