如何使用 fernet 作为烧瓶服务解密字符串?
How to decrypt a string with fernet as a flask service?
我正在制作一个简单的烧瓶 api,它正在对即将到来的字符串进行编码和解码。我的编码没有问题,但解码时出现 InvalidToken 错误。我试过了但无法做到。代码:
from flask import Flask,jsonify,request
from cryptography.fernet import Fernet
app = Flask(__name__)
key = Fernet.generate_key()
fernet = Fernet(key)
@app.route('/decode',methods = ["POST"])
def decode():
response = {'encoded_text': request.json['encoded_text']}
text = response['encoded_text']
print(text)
decryptedbytes = fernet.decrypt(text)
decryptedstr = decryptedbytes.decode('utf-8')
return decryptedstr
if __name__ == '__main__':
app.run(debug=True)
给出:TypeError:令牌必须是字节。
您正在传递 fernet.decrypt
一个 str
而不是 bytes
对象。
您的加密数据在 JSON 中是如何编码的?通常是 base64:
import base64
decryptedbytes = fernet.decrypt(base64.b64decode(text))
记住JSON不支持任意字节。
附带说明一下,每次程序启动时都会为 fernet 算法生成一个密钥,这意味着如果您的服务器重新启动,所有数据都会消失。
我正在制作一个简单的烧瓶 api,它正在对即将到来的字符串进行编码和解码。我的编码没有问题,但解码时出现 InvalidToken 错误。我试过了但无法做到。代码:
from flask import Flask,jsonify,request
from cryptography.fernet import Fernet
app = Flask(__name__)
key = Fernet.generate_key()
fernet = Fernet(key)
@app.route('/decode',methods = ["POST"])
def decode():
response = {'encoded_text': request.json['encoded_text']}
text = response['encoded_text']
print(text)
decryptedbytes = fernet.decrypt(text)
decryptedstr = decryptedbytes.decode('utf-8')
return decryptedstr
if __name__ == '__main__':
app.run(debug=True)
给出:TypeError:令牌必须是字节。
您正在传递 fernet.decrypt
一个 str
而不是 bytes
对象。
您的加密数据在 JSON 中是如何编码的?通常是 base64:
import base64
decryptedbytes = fernet.decrypt(base64.b64decode(text))
记住JSON不支持任意字节。
附带说明一下,每次程序启动时都会为 fernet 算法生成一个密钥,这意味着如果您的服务器重新启动,所有数据都会消失。