我不确定你们中是否有人熟悉加密模块,但我正在尝试加密代表字符串的变量。
例如:
string = input('String here')
他们在模块页面上给出的示例是:
from cryptography.fernet import Fernet
key = Fernet.generate_key()
cipher_suite = Fernet(key)
cipher_text = cipher_suite.encrypt(b"A really secret message. Not for prying eyes.")
plain_text = cipher_suite.decrypt(cipher_text)
这一切都很好,但是当我尝试用变量替换“真正秘密的消息字符串”时,它不起作用。
如果用引号引起来,它只会打印变量的名称(duh)
如果没有引号,如下所示:cipher_text =
cipher_suite.encrypt(bstring)
,则表示变量未定义(也是废话)
但是如果我只是将变量放入,则会出现错误:
TypeError: data must be bytes.
有什么想法吗?谢谢!
根据Python文档,
bytes 和 bytearray 对象是整数序列(0 到 255 之间),表示单个字节的 ASCII 值
我认为输入需要像这样
a = b"abc"
(注意“b”)。
实现此目的的另一种方法是
a = bytes("abc")
您只需
.encode()
密码字符串即可。
'my_pass'.encode() # this encodes your string to byte literal
更全面地说,它会是这样的:
cipher_text = cipher_suite.encrypt('my_pass'.encode())
您可以使用 bytes 函数 是:
from cryptography.fernet import Fernet
key = Fernet.generate_key()
cipher_suite = Fernet(key)
string = input("string here")
string = bytes(string ,'utf-8')
print(string)
cipher_text = cipher_suite.encrypt(string)
print(cipher_text)
plain_text = cipher_suite.decrypt(cipher_text)
plain_text = plain_text.decode()
print(plain_text)
输出:
b“字符串的值”
G6373Hsh528gs(随机字符)
字符串的值
您应该在传递之前对输入进行编码。要实现这一点,请使用
.encode()
方法。
string = input('String here').encode()