将Pycryptodome密文转换为文本

问题描述

from Crypto.Cipher import AES
from Crypto.Util.Padding import pad

key = b'mysecretpassword'  # 16 byte password
cipher = AES.new(key,AES.MODE_CBC)
plaintext = b'my super secret message to encrypt'
ciphertext = cipher.encrypt(pad(plaintext,AES.block_size))

当我打印密文var时,它显示如下: b'\x8e\xde\x02\xa9\x8f8=\x8b\x87\x95\x19f\xcc........

我可以通过某种方式将其打印为普通文本格式吗?

我尝试了convert()转换为"Ioß×Þ³>Û–ª......."的crypto()

utf-8产生错误(位置2:0xa9:无效的起始字节)

一天结束了...我只希望将类似于"I2XlmXarM6GrX1Qq4p8h3EgnA..."格式的密文与具有相同密钥,iv,块模式,文本等的在线密文示例进行比较。

希望所有有意义的事情。

解决方法

该问题的答案是使用hex()。upper()以与在线网站相同的格式打印出来。

因此,在上面的示例中..我将把print(ciphertext.hex()。upper())作为文件的结尾,我的密文输出将与其他在线站点相同,因此我可以比较我的答案。

正如Marc上面指出的,我也可以使用base64来转换密文。 谢谢大家

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...