如何将两个UUIDv4字符串组合为单个顺序无关的唯一UUIDv4字符串
两个UUIDv4合并生成无序关联唯一UUIDv4方案
功能要求
- 输入两个UUIDv4字符串,输出单个符合规范的UUIDv4字符串
- 输入的两个UUID的传入顺序不影响输出结果,相同组合始终生成相同输出
- 输出结果可复现,不存在随机性
Python实现代码
import uuid import hashlib def generate_uuidv4(uuid1, uuid2): """ 基于两个输入UUID生成唯一且固定的UUIDv4字符串,输入顺序不影响输出结果 """ # 统一转字符串后排序,消除输入顺序影响 sorted_uuids = sorted([str(uuid1).strip(), str(uuid2).strip()]) # 拼接后计算md5哈希(刚好得到128位,适配UUID长度) combined = ''.join(sorted_uuids).encode('utf-8') hash_bytes = hashlib.md5(combined).digest() # 修正为UUIDv4格式:第6字节高4位设为4,第8字节高2位设为10 hash_list = list(hash_bytes) hash_list[6] = (hash_list[6] & 0x0F) | 0x40 hash_list[8] = (hash_list[8] & 0x3F) | 0x80 # 转为UUID对象后输出字符串格式 return str(uuid.UUID(bytes=bytes(hash_list)))
验证示例
你可以通过以下调用验证顺序无关的特性:
a = "123e4567-e89b-12d3-a456-426614174000" b = "123e4567-e89b-12d3-a456-426614174001" print(generate_uuidv4(a, b)) print(generate_uuidv4(b, a)) # 两次输出结果完全一致
内容的提问来源于stack exchange,提问作者Zorrat
相关产品推荐
相关产品推荐

