Python Forensics 简明教程
Python Forensics - Hash Function
hash function 被定义为函数,它映射到固定长度的大量数据,该函数确保相同的输入会生成相同的输出,而这实际上定义为哈希和。哈希和包含特定信息的一部分特征。
这个函数实际上不可能被还原。因此,任何第三方攻击(例如暴力破解攻击)在实际上是不可能的。而且,这种算法被称为 one-way cryptographic algorithm 。
一个理想的密码哈希函数具有四个主要的属性:
-
它一定很容易为任何给定的输入计算哈希值。
-
生成原始的输入从它的哈希是不可能的。
-
修改输入而不改变哈希是不可能的。
-
找到具有相同哈希的两个不同的输入是不可能的。
Example
考虑以下示例,它有助于使用十六进制格式的字符来匹配密码。
import uuid
import hashlib
def hash_password(password):
# userid is used to generate a random number
salt = uuid.uuid4().hex #salt is stored in hexadecimal value
return hashlib.sha256(salt.encode() + password.encode()).hexdigest() + ':' + salt
def check_password(hashed_password, user_password):
# hexdigest is used as an algorithm for storing passwords
password, salt = hashed_password.split(':')
return password == hashlib.sha256(salt.encode()
+ user_password.encode()).hexdigest()
new_pass = raw_input('Please enter required password ')
hashed_password = hash_password(new_pass)
print('The string to store in the db is: ' + hashed_password)
old_pass = raw_input('Re-enter new password ')
if check_password(hashed_password, old_pass):
print('Yuppie!! You entered the right password')
else:
print('Oops! I am sorry but the password does not match')