晴天的Vlog

晴天的Vlog

Python生成用户ID

26
2024-11-09
Python生成用户ID

封装生成ID的函数

封装一个简单的纯数字用户ID

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project :Qingyu-Tool-Server 
@File    :generate_id.py
@Author  :晴天
@Date    :2024-11-05 23:38:18
"""
import random
import time
import socket
import hashlib


def get_server_id():
    # 可以返回服务器的唯一标识符,例如主机名的一部分
    return str(socket.gethostname()).encode('utf-8')


def generate_user_id():
    # 获取当前时间的微秒时间戳
    timestamp = int(time.time() * 1_000_000)  # 转为微秒
    # 生成随机数字,增加到8位
    random_digits = random.randint(10000000, 99999999)

    # 拼接时间戳、随机数和服务器标识符信息
    server_id = get_server_id()
    unique_string = f"{timestamp}{random_digits}{server_id}"

    # 计算SHA256哈希并转为数字
    hash_object = hashlib.sha256(unique_string.encode())
    hash_hex = hash_object.hexdigest()

    # 截取前10位作为用户ID
    user_id = int(hash_hex, 16) % 10 ** 10  # 取模确保ID为10位数字

    return str(user_id)


if __name__ == '__main__':
    print(generate_user_id())

运行测试