from flask import Flask, request, jsonify
import jwt
import datetime
app = Flask(__name__)
SECRET_KEY = 'your_secret_key'
@app.route('/login', methods=['POST'])
def login():
username = request.json['username']
password = request.json['password']
# 模拟数据库查询
if username == 'admin' and password == 'password':
token = jwt.encode({
'user': username,
'exp': datetime.datetime.utcnow() + datetime.timedelta(minutes=30)
}, SECRET_KEY, algorithm='HS256')
return jsonify({'token': token})
else:
return jsonify({'error': 'Invalid credentials'}), 401
if __name__ == '__main__':
app.run(debug=True)
from Crypto.Cipher import AES
from base64 import b64encode, b64decode
def encrypt_data(data):
key = b'Sixteen byte key'
cipher = AES.new(key, AES.MODE_EAX)
nonce = cipher.nonce
ciphertext, tag = cipher.encrypt_and_digest(data.encode())
return b64encode(nonce + ciphertext + tag).decode('utf-8')
def decrypt_data(encrypted_data):
key = b'Sixteen byte key'
encrypted_data = b64decode(encrypted_data)
nonce = encrypted_data[:16]
ciphertext = encrypted_data[16:-16]
tag = encrypted_data[-16:]
cipher = AES.new(key, AES.MODE_EAX, nonce=nonce)
plaintext = cipher.decrypt(ciphertext)
try:
cipher.verify(tag)
return plaintext.decode('utf-8')
except ValueError:
return "Decryption failed"