【发布时间】:2014-01-15 05:33:26
【问题描述】:
我正在尝试通过密码加密解决Rainbow Tables 问题,但仅此而已。
import sys
import random
import hashlib
def mt_rand (low = 0, high = sys.maxint):
"""Generate a better random value
"""
return random.randint (low, high)
def substr (s, start, length = None):
"""Returns the portion of string specified by the start and length
parameters.
"""
if len(s) >= start:
return False
if not length:
return s[start:]
elif length > 0:
return s[start:start + length]
else:
return s[start:length]
def unique_salt():
return substr(hashlib.sha1(mt_rand()),0,22)
password = "12345"
salt = unique_salt()
hash = hashlib.sha1(salt + password).hexdigest()
print(hash)
我收到此错误:
Traceback (most recent call last):
File "C:/Users/Ajay/PycharmProjects/itertools/test.py", line 27, in <module>
salt = unique_salt()
File "C:/Users/Ajay/PycharmProjects/itertools/test.py", line 24, in unique_salt
return substr(hashlib.sha1(mt_rand()),0,22)
TypeError: must be string or buffer, not int
我知道我遗漏了一些非常微不足道的东西,但无法找到我遗漏的地方。 请帮忙。
【问题讨论】:
-
hashlib.sha1需要对字符串进行哈希处理,但您输入了一个整数。你想散列什么? -
我想对密码进行哈希处理,即
string。 -
unique_salt函数是干什么用的? -
@aIKid 我想为每个用户生成一个随机字符串并将其用作唯一的盐。
标签: python cryptography rainbowtable