如何使用加密模块对变量进行加密?

问题描述 投票:0回答:4

我不确定你们中是否有人熟悉加密模块,但我正在尝试加密代表字符串的变量。

例如:

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 encryption module cryptography
4个回答
6
投票

根据Python文档

bytes 和 bytearray 对象是整数序列(0 到 255 之间),表示单个字节的 ASCII 值

我认为输入需要像这样

a = b"abc"

(注意“b”)。

实现此目的的另一种方法是

a = bytes("abc")

4
投票

您只需

.encode()
密码字符串即可。

'my_pass'.encode() # this encodes your string to byte literal

更全面地说,它会是这样的:

cipher_text = cipher_suite.encrypt('my_pass'.encode())

1
投票

您可以使用 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(随机字符)

字符串的值


0
投票

您应该在传递之前对输入进行编码。要实现这一点,请使用

.encode()
方法。

string = input('String here').encode()

© www.soinside.com 2019 - 2024. All rights reserved.