私は10進数のシーケンス(0から36 ^ 5まで)を持っています。目標は、5文字(大文字と数字)で構成される一意の(繰り返されない)ランダムに表示される文字列を取得することです。
例えば
1 get transformed to ACD1R
2 get transformed to BD5T2
重要な条件は、生成された文字列がランダムに見えることですが、その下には、変換関数の入力と出力の間に全単射関数があります。
私はbase64で試しましたが、pythonic暗号化の方法が何かわかりますか、またはこの問題の解決策は実行可能ではありません
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
ただし、これは一意であることを保証するものではありません。ハッシュテーブルを保持して重複するものをチェックし、それらの競合に対して別のテーブルを作成することができます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加