如何解密RC2密文



Python 3.5, pycrypto 2.7a1, Windows, RC2加密

的例子:

print('Введите текс, который хотите зашифровать:')
text = input()
with open('plaintext.txt', 'w') as f:
    f.write(text)
key = os.urandom(32)
with open('rc2key.bin', 'wb') as keyfile:
    keyfile.write(key)
iv = Random.new().read(ARC2.block_size)
cipher = ARC2.new(key, ARC2.MODE_CFB, iv)
ciphertext = iv + cipher.encrypt(bytes(text, "utf-8"))
with open('iv.bin', 'wb') as f:
    f.write(iv)
with open('ciphertext.bin', 'wb') as f:
    f.write(ciphertext)
print(ciphertext.decode("cp1251"))

我想知道如何解密这篇文章,我试过了,但做不到。

My try to decrypt:

os.system('cls')
print('Дешифруем значит')
with open('ciphertext.bin', 'rb') as f:
    ciphertext = f.read()
with open('rc2key.bin', 'rb') as f:
    key = f.read()
with open('iv.bin', 'rb') as f:
    iv = f.read()
ciphertext = ciphertext.decode('cp1251')
iv = iv.decode('cp1251')
text =  ciphertext.replace(iv, '')
text = cipher.decrypt(text)
with open('plaintext.txt', 'w') as f:
    f.write(text)
print(text.decode("ascii"))

但我明白,我需要密码变量,我不能保存到。txt或。bin文件,所以我为什么要寻求帮助。

IV是非保密值,通常写在密文前面。既然已经这样做了,就不需要编写额外的IV文件了。RC2的块大小为64位,因此IV将始终是8字节长。

with open('ciphertext.bin', 'rb') as f:
    ciphertext = f.read()
with open('rc2key.bin', 'rb') as f:
    key = f.read()
iv = ciphertext[:ARC2.block_size]
ciphertext = ciphertext[ARC2.block_size:]
cipher = ARC2.new(key, ARC2.MODE_CFB, iv)
text = cipher.decrypt(ciphertext).decode("utf-8")
with open('plaintext.txt', 'w') as f:
    f.write(text)
print(text)
其他问题:

  • 不要简单地解码二进制数据,如密文、密钥或IV,因为这些很可能是不可打印的。

  • 如果你在做不同的事情,不要重复使用相同的cipher对象。解密需要一个新初始化的ARC2对象

相关内容

  • 没有找到相关文章

最新更新