如何为Python制作tripcode生成器?

时间:2013-12-12 18:11:55

标签: python random tripcode

我宁愿不改变我已经写过的当前代码,尽管它可能效率很低或者其他什么。

import string
import random

prompt=raw_input("Name")
print "Code:",prompt
a=string.ascii_letters+string.digits+string.digits
trip='!%s%s%s%s%s%s%s%s%s%s' % (random.choice(a),random.choice(a),random.choice(a),random.choice(a),random.choice(a),random.choice(a),random.choice(a),random.choice(a),random.choice(a),random.choice(a))
print trip

我想要做的是制作一个tripcode生成器,以便我编写的这个程序在输出中生成一个始终与输入一致的代码。因此,每当有人在提示中键入单词时,他们将始终获得相同的随机生成的代码。

因此,如果有人在输入中键入“python”,输出将始终为!gT3rF39hjj或一些随机生成的tripcode。

很抱歉,如果我不清楚的话。

3 个答案:

答案 0 :(得分:2)

使用哈希或HMAC怎么样?

例如:

import base64
import hmac
import hashlib

prompt = raw_input('Name')
print 'Code:',prompt
trip = base64.b64encode(hmac.new('somekey', prompt, hashlib.sha1).digest())
print trip

只要密钥保密,输出就不可预测。

答案 1 :(得分:1)

糟糕!我的第一个答案非常愚蠢 - 每次传递名称时都会给出相同的答案,但这只是因为它每次都返回相同的代码 。相反,我们可以根据名称设置种子(请参阅文档here)。例如:

prompt=raw_input("Name")
random.seed(prompt)

产生

~/coding$ python tripcode.py 
NameFred
Code: Fred
!yjmjKnTwC8
~/coding$ python tripcode.py 
NameFred
Code: Fred
!yjmjKnTwC8
~/coding$ python tripcode.py
NameBob
Code: Bob
!C7im8B12jo

[BTW,prompt会更好地命名为name,不是吗?]

答案 2 :(得分:1)

您可以使用hashlib为用户输入的数据生成几乎唯一的摘要。

import hashlib

name = raw_input("Name: ")
trip = hashlib.md5(name).hexdigest()
print trip

结果:

C:\programs>get_trip.py
Name: Kevin
f1cd318e412b5f7226e5f377a9544ff7

C:\programs>get_trip.py
Name: George
578ad8e10dc4edb52ff2bd4ec9bc93a3

C:\programs>get_trip.py
Name: Kevin
f1cd318e412b5f7226e5f377a9544ff7
相关问题