diff --git a/main/utils.py b/main/utils.py new file mode 100644 index 0000000..1d72390 --- /dev/null +++ b/main/utils.py @@ -0,0 +1,120 @@ +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("")>=0 and data.find("")==-1: + #还未思考结束 + think = data[8:] + data = "" + elif data.find("")>=0 and data.find("")>0: + #思考结束 + end = data.find("") + 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) \ No newline at end of file