Files
JieXi/utils/security.py
2025-11-28 21:20:40 +08:00

24 lines
752 B
Python

import bcrypt
import random
import string
from datetime import datetime, timedelta
def hash_password(password: str) -> str:
"""加密密码"""
salt = bcrypt.gensalt()
return bcrypt.hashpw(password.encode('utf-8'), salt).decode('utf-8')
def verify_password(password: str, hashed: str) -> bool:
"""验证密码"""
return bcrypt.checkpw(password.encode('utf-8'), hashed.encode('utf-8'))
def generate_verification_code(length: int = 6) -> str:
"""生成验证码"""
return ''.join(random.choices(string.digits, k=length))
def get_client_ip(request):
"""获取客户端IP"""
if request.headers.get('X-Forwarded-For'):
return request.headers.get('X-Forwarded-For').split(',')[0]
return request.remote_addr