Python 取证 - 哈希函数



哈希函数定义为将大量数据映射为具有指定长度的固定值的一个函数。此函数可确保相同的输入得到相同的结果,而该结果实际上定义为哈希和。哈希和包括带有特定信息的特征。

实际上不可能反转此函数。因此,任何第三方攻击(如暴力攻击)实际上都是不可能的。此外,这种算法称为单向加密算法

理想的加密哈希函数具有四个主要属性 -

  • 对任何给定的输入计算哈希值都必须容易。
  • 从其哈希值生成原始输入必须不可行。
  • 修改输入而不更改哈希值必须不可行。
  • 找到具有相同哈希值的两个不同的输入必须不可行。

示例

考虑以下示例,它有助于使用十六进制格式的字符匹配密码。

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')

流程图

我们借助以下流程图解释了此程序的逻辑 -

Hash Function Flowchart

输出

我们的代码将产生以下输出 -

Hash Function Output

两次输入的密码与哈希函数匹配。这可确保两次输入的密码准确无误,这有助于收集有用的数据并以加密格式保存它们。

广告