2012-07-05 13:07:49 +00:00
|
|
|
#!/usr/bin/env python
|
|
|
|
# encoding: utf-8
|
|
|
|
|
2013-04-20 18:17:25 +00:00
|
|
|
import sys
|
2012-07-05 13:07:49 +00:00
|
|
|
from hashlib import md5, sha1
|
|
|
|
from base64 import urlsafe_b64encode as b64encode
|
|
|
|
import random
|
|
|
|
random.seed()
|
|
|
|
|
|
|
|
def random_string():
|
|
|
|
"""
|
|
|
|
Generate a random string (currently a random number as a string)
|
|
|
|
"""
|
|
|
|
return str(random.randint(0,100000))
|
|
|
|
|
|
|
|
def generate_key(max_length, data, encoder=b64encode, digester=md5):
|
|
|
|
"""
|
|
|
|
Generate a Base64-encoded 'random' key by hashing the data.
|
|
|
|
data is a tuple of seeding values. Pass arbitrary encoder and
|
|
|
|
digester for specific hashing and formatting of keys
|
|
|
|
"""
|
|
|
|
base = ''
|
|
|
|
for arg in data:
|
|
|
|
base += str(arg)
|
|
|
|
key = encoder(digester(base).digest())
|
|
|
|
return key[:max_length]
|
|
|
|
|
2012-07-06 11:14:07 +00:00
|
|
|
if __name__ == "__main__":
|
2013-04-20 18:17:25 +00:00
|
|
|
key = generate_key(40, (random_string(),))
|
|
|
|
if len(sys.argv) == 2:
|
|
|
|
fp = open(sys.argv[1], 'w')
|
|
|
|
fp.write("SECRET_KEY = \"%s\"\n" % key)
|
|
|
|
fp.close()
|
|
|
|
else:
|
|
|
|
print key
|