Python 将一系列数字转换为唯一、随机出现的字符串

Python 将一系列数字转换为唯一、随机出现的字符串,python,python-2.7,encoding,character-encoding,Python,Python 2.7,Encoding,Character Encoding,我有一个十进制数字序列(从0到36^5),目标是获得由5个字符(大写和数字)组成的唯一(非重复)随机出现的字符串 e、 g 一个基本条件是生成的字符串看起来是随机的,但在转换函数的输入和输出之间有一个双射函数 我试过base64,你知道什么是python加密方式吗,或者这个问题的解决方案是不可行的使用md5,并将hexdigest减少到只有5个字符怎么样 from hashlib import md5 for i in range(1, 10): target = md5(str(i).

我有一个十进制数字序列(从0到36^5),目标是获得由5个字符(大写和数字)组成的唯一(非重复)随机出现的字符串

e、 g

一个基本条件是生成的字符串看起来是随机的,但在转换函数的输入和输出之间有一个双射函数


我试过base64,你知道什么是python加密方式吗,或者这个问题的解决方案是不可行的

使用md5,并将hexdigest减少到只有5个字符怎么样

from hashlib import md5
for i in range(1, 10):
    target = md5(str(i).encode('utf-8')).hexdigest()[0:5].upper()
    print("{number} get transformed to {target}".format(number=i, target=target)))
你得到:

1 get transformed to C4CA4
2 get transformed to C81E7
3 get transformed to ECCBC
4 get transformed to A87FF
5 get transformed to E4DA3
6 get transformed to 16790
7 get transformed to 8F14E
8 get transformed to C9F0F
9 get transformed to 45C48

但这不能保证您是唯一的,您可以保留一个哈希表来检查重复的哈希表,并为这些冲突创建另一个哈希表。

您的解决方案是一个很好的解决方案,只是它缺少唯一性条件,这意味着两个数字可能生成相同的字符串。我测试了您的解决方案,并在迭代1172中发现冲突。
1 get transformed to C4CA4
2 get transformed to C81E7
3 get transformed to ECCBC
4 get transformed to A87FF
5 get transformed to E4DA3
6 get transformed to 16790
7 get transformed to 8F14E
8 get transformed to C9F0F
9 get transformed to 45C48