120 lines
3.1 KiB
Python
120 lines
3.1 KiB
Python
|
|
import secrets
|
|||
|
|
import hashlib
|
|||
|
|
import time
|
|||
|
|
import os
|
|||
|
|
|
|||
|
|
def generate_hashed_session_id():
|
|||
|
|
"""
|
|||
|
|
生成一个基于 SHA-256 的安全 session_id。
|
|||
|
|
:return: 安全的 session_id。
|
|||
|
|
"""
|
|||
|
|
random_bytes = secrets.token_bytes(32) # 生成 32 字节随机数
|
|||
|
|
hashed = hashlib.sha256(random_bytes).hexdigest() # 计算 SHA-256 哈希值
|
|||
|
|
#保存session_id
|
|||
|
|
timestamp = int(time.time())
|
|||
|
|
with open(f"/tmp/k3gpt/session_id_{hashed}","w+") as f:
|
|||
|
|
f.write(str(timestamp))
|
|||
|
|
return hashed
|
|||
|
|
|
|||
|
|
def valid_session_id(session_id):
|
|||
|
|
"""
|
|||
|
|
检查会话id是否有效
|
|||
|
|
"""
|
|||
|
|
try:
|
|||
|
|
with open(f"/tmp/k3gpt/session_id_{session_id}","r") as f:
|
|||
|
|
s_timestamp = f.read()
|
|||
|
|
if int(time.time())-int(s_timestamp) < 3600*12:
|
|||
|
|
return True
|
|||
|
|
else:
|
|||
|
|
return False
|
|||
|
|
except Exception as e:
|
|||
|
|
print(e)
|
|||
|
|
return False
|
|||
|
|
|
|||
|
|
|
|||
|
|
def delete_session_id(session_id):
|
|||
|
|
"""
|
|||
|
|
删除session
|
|||
|
|
"""
|
|||
|
|
try:
|
|||
|
|
os.remove(f"/tmp/k3gpt/session_id_{session_id}")
|
|||
|
|
except:
|
|||
|
|
pass
|
|||
|
|
|
|||
|
|
def hashed_password(password):
|
|||
|
|
"""
|
|||
|
|
生成一个基于 SHA-256 的安全 session_id。
|
|||
|
|
:return: 安全的 session_id。
|
|||
|
|
"""
|
|||
|
|
pswd=f"k3gpt_{password}".encode("utf8")
|
|||
|
|
hashed = hashlib.sha256(pswd).hexdigest() # 计算 SHA-256 哈希值
|
|||
|
|
return hashed
|
|||
|
|
|
|||
|
|
|
|||
|
|
def hashed_tel(password):
|
|||
|
|
"""
|
|||
|
|
生成一个基于 SHA-256 的安全 session_id。
|
|||
|
|
:return: 安全的 session_id。
|
|||
|
|
"""
|
|||
|
|
pswd=f"tel_{password}".encode("utf8")
|
|||
|
|
hashed = hashlib.sha256(pswd).hexdigest() # 计算 SHA-256 哈希值
|
|||
|
|
return hashed
|
|||
|
|
|
|||
|
|
import re
|
|||
|
|
|
|||
|
|
def regular_filename(filename):
|
|||
|
|
"""
|
|||
|
|
去除字符串中的中文符号、英文符号、空格、换行、制表符等所有特殊符号
|
|||
|
|
仅保留:中文字符、英文字母、数字
|
|||
|
|
"""
|
|||
|
|
# \u4e00-\u9fa5:常用中文字符范围(简体+繁体基本覆盖)
|
|||
|
|
# a-zA-Z0-9:英文字母和数字
|
|||
|
|
cleaned = re.sub(r'[^\u4e00-\u9fa5a-zA-Z0-9.]', '_', filename)
|
|||
|
|
return cleaned
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
#处理思考大模型的信息
|
|||
|
|
def found_llm_think_data(data):
|
|||
|
|
think=""
|
|||
|
|
if data.find("<think>")>=0 and data.find("</think>")==-1:
|
|||
|
|
#还未思考结束
|
|||
|
|
think = data[8:]
|
|||
|
|
data = ""
|
|||
|
|
elif data.find("<think>")>=0 and data.find("</think>")>0:
|
|||
|
|
#思考结束
|
|||
|
|
end = data.find("</think>")
|
|||
|
|
think = data[8:end]
|
|||
|
|
data = data[end+8:]
|
|||
|
|
|
|||
|
|
|
|||
|
|
begin = data.find("{")
|
|||
|
|
end = data.rfind("}")
|
|||
|
|
if data.find("```json") >=0:
|
|||
|
|
#找到json数据,只返回json数据
|
|||
|
|
data = data[begin:end+1]
|
|||
|
|
elif begin>0 and end >0:
|
|||
|
|
#含有json数据
|
|||
|
|
data = data[begin:end+1]
|
|||
|
|
return think,data
|
|||
|
|
|
|||
|
|
from cryptography.fernet import Fernet
|
|||
|
|
|
|||
|
|
key = b'aDSK382C_Ep5hAvMkW0UPttdicyog-JoxaV_-CStutE='
|
|||
|
|
|
|||
|
|
def encrypt_tel(tel):
|
|||
|
|
f = Fernet(key)
|
|||
|
|
token = f.encrypt(tel.encode("utf-8"))
|
|||
|
|
return token.decode("utf-8")
|
|||
|
|
|
|||
|
|
def decrypt_tel(token):
|
|||
|
|
f = Fernet(key)
|
|||
|
|
try:
|
|||
|
|
tel = f.decrypt(token.encode("utf-8"))
|
|||
|
|
except:
|
|||
|
|
return "***********"
|
|||
|
|
return tel.decode("utf-8")
|
|||
|
|
|
|||
|
|
if __name__=="__main__":
|
|||
|
|
h = hashed_password("12345678")
|
|||
|
|
print(h)
|