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

时间:2017-09-14 16:34:57

标签: python python-2.7 encoding character-encoding

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

e.g。

    1 get transformed to ACD1R

    2 get transformed to BD5T2

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

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

1 个答案:

答案 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

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