我使用加密框架......
from Crypto.PublicKey import RSA
new_key=RSA.generate(1024,e=65537)
plain_text_original="xyz"
cipher_text=new_key.encrypt(plain_text_original.encode("utf-8"),123455)[0]
print(cipher_text)
print(cipher_text.decode("utf-8"))
cipher_text如下:
b"\x8cwO\xf5\xc9\xd3\xa4c|8\xcb\xfc\xef\xbd\xca\xb1&\x15aj\xec\xff\xd9\xeL"
try decode("utf-8")
它显示异常UnicodeDecodeError
为什么会这样?
答案 0 :(得分:0)
密文,尽管有名称,但不包含可打印文本。所有现代密码 - 与其他加密原语一样 - 对输入输出的位进行操作。
这意味着要使用文本输入,您需要执行character-encoding,例如UTF-8,ASCII,ISO-Latin等。输出也是位,所以如果你需要文本,你需要{ {3}}二进制文本。常见的编码器是十六进制(更容易供人类使用)和base64(更高效)编码。
一种好的加密方法可以提供与随机无法区分的输出。由于并非所有字节都可以解码为可读文本,因此无法直接在密码输出上执行字符解码。
当然你可能会“幸运”而不会得到解码错误或异常。在最坏的情况下,您可能会丢失数据,因为许多解码器会静默跳过或替换无法解码的字节。