我有一个十进制数字序列(从0到36 ^ 5),目标是获得由5个字符(大写和数字)组成的唯一(非重复),随机出现的字符串。
e.g。
1 get transformed to ACD1R
2 get transformed to BD5T2
一个基本条件是生成的字符串看起来是随机的,但在下面是转换函数的输入和输出之间的双射函数。
我尝试过使用base64,你知道什么是pythonic加密方式,或者这个问题的解决方案不可行
答案 0 :(得分:1)
如何使用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
但是这不能保证你是唯一的,你可以保留一个哈希表来检查重复的哈希表,并为那些冲突制作另一个哈希表。