首页 > 解决方案 > 使用密码学的 Python 解密会添加随机字符

问题描述

所以我将密码和用户名存储在单独的文件中,我想解密它们并检查它们,但是每当我解密单词时,它都会在原始单词中添加字符:

def checkLogin(usernameInput, passwordInput, key, Usr):
    f = Fernet(key)
    with open("username.csv", "rb") as file:
                encryptedUsername = file.read()
    decryptedUsername = f.decrypt(encryptedUsername)
    with open("password.csv", "rb") as file:
                encryptedPassword = file.read()
    decryptedPassword = f.decrypt(encryptedPassword)
    print(decryptedPassword)
    print(decryptedUsername)
    usernameInput = usernameInput.get()
    passwordInput = passwordInput.get()

当我打印它返回的解密字符串时,原始用户名和密码是:“Admin”和“SecurePassword”:“b'SecurePassword\r\n'”和“b'Admin'”

标签: pythoncryptographyfernet

解决方案


您还没有真正展示文件示例来说明为什么要添加其他字符,因此我将仅提供 Python 中的快速修复解决方案。您可以在将and转换为字符串strip()后使用删除“b”、“\r”和“\n” :usernameInputpasswordInput

usernameInput = usernameInput.get().decode("utf-8").strip("\n").strip("\r")
passwordInput = passwordInput.get().decode("utf-8").strip("\n").strip("\r")

strip()基本上去掉了字符串开头和结尾处提供的参数,decode()并将变量转换为字符串。


推荐阅读