我如何加密 python 中的用户输入?
How do i encrypt the userinput in python?
我正在尝试在 python 中编写代码,对用户输入进行加密。
例如,如果我写 "name",输出应该是 "obnf"。但问题是现在输出只有 "o",所以只有第一个字母通过循环,其余的被排除在外。
有什么建议么?
这是我的代码
userInput = input("write something: ")
letters = iter(["A","B","C","D", "E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","X","Y","Z","0","1","2","3","4","5","6","7","8","9","a","b","c", "d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"])
def Encoding(user_input):
encrypted_msg = ""
for i in range(len(user_input)):
char = user_input[i]
if char in letters:
encrypted_msg += next(letters)
return encrypted_msg
print(Encoding(userInput))
一个迭代器只能遍历一次,然后遍历。请改用 list
。
考虑 str.maketrans() and str.translate() 进行快速替换。
下面的代码解决了这个问题:
from cryptography.fernet import Fernet
def encoding(user_input, key):
return Fernet(key).encrypt(bytes(bytearray(user_input, encoding='UTF-8')))
def decoding(encrypted_input, key):
return Fernet(key).decrypt(encrypted_input).decode("UTF-8")
if __name__ == '__main__':
userInput = input("write something: ")
key = Fernet.generate_key()
encryptedInput = encoding(userInput, key)
print(encryptedInput)
decryptedInput = decoding(encryptedInput, key)
print(decryptedInput)
干杯!
我正在尝试在 python 中编写代码,对用户输入进行加密。 例如,如果我写 "name",输出应该是 "obnf"。但问题是现在输出只有 "o",所以只有第一个字母通过循环,其余的被排除在外。 有什么建议么? 这是我的代码
userInput = input("write something: ")
letters = iter(["A","B","C","D", "E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","X","Y","Z","0","1","2","3","4","5","6","7","8","9","a","b","c", "d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"])
def Encoding(user_input):
encrypted_msg = ""
for i in range(len(user_input)):
char = user_input[i]
if char in letters:
encrypted_msg += next(letters)
return encrypted_msg
print(Encoding(userInput))
一个迭代器只能遍历一次,然后遍历。请改用 list
。
考虑 str.maketrans() and str.translate() 进行快速替换。
下面的代码解决了这个问题:
from cryptography.fernet import Fernet
def encoding(user_input, key):
return Fernet(key).encrypt(bytes(bytearray(user_input, encoding='UTF-8')))
def decoding(encrypted_input, key):
return Fernet(key).decrypt(encrypted_input).decode("UTF-8")
if __name__ == '__main__':
userInput = input("write something: ")
key = Fernet.generate_key()
encryptedInput = encoding(userInput, key)
print(encryptedInput)
decryptedInput = decoding(encryptedInput, key)
print(decryptedInput)
干杯!