📜  Python中的漩涡哈希函数

📅  最后修改于: 2022-05-13 01:55:29.525000             🧑  作者: Mango

Python中的漩涡哈希函数

散列函数是一个在使系统安全方面发挥巨大作用的函数,因为它将提供给它的正常数据转换为固定长度的不规则值。我们可以想象它是我们家中的振动器。
当我们将数据放入这个函数时,它会输出一个不规则的值。它输出的不规则值称为“哈希值”。哈希值只是数字,但通常以十六进制编写。计算机将值管理为二进制。哈希值也是一种数据,通常以二进制形式进行管理。

哈希python

漩涡哈希函数

Whirlpool 是由 Vincent Rijmen 和 Paulo SLM Barreto 创建的加密哈希函数。它于 2000 年首次发布,并于 2001 年和 2003 年进行了修订。它衍生自 square 和 Advanced Encryption Standard。它是一个分组密码散列函数,是在方形分组密码之后设计的。它需要少于 2^256 位长度的输入并将其转换为 512 位哈希。 Whirlpool 的第一个版本称为 Whirlpool-0,在 2001 年第一次修订后更改为 Whirlpool-T。在这个版本中,S-box 发生了变化,并且在硬件中变得更易于使用。 2002 年,在 Whirlpool-0 的扩散矩阵中发现了一个漏洞,通过更改矩阵将其删除,并且名称也从 Whirlpool-T 更改为 Whirlpool。
漩涡中的每个分组密码都是一个 8*8 矩阵。通过使用四个操作,函数的状态不断变化:

Operation NameFunction
Mix Rows(MR)It is a right multiplication of each row by an 8*8 matrix.
Substitute Bytes(SB)It is a simple table lookup and gives nonlinear mapping.
Add Round Key(AK)In this the 512 bits of the round key is goes through XOR with 512 bit of current state.
Shift Columns(SC)In this except the first column of current state are cyclically downward shifted.

哈希值使用以下公式计算:

State = MR*AK*SC*SB(State)

使用安装漩涡库

pip install whirlpool

示例 1:

Python3
# Python program to demonstrate
# whirlpool hash function
 
 
import whirlpool
  
string = b"GeeksforGeeks"
 
h1 = whirlpool.new(string)
hashed_output = h1.hexdigest()
 
print("The hashed value is")
print(hashed_output)


Python3
# Python program to demonstrate
# whirlpool hash function
 
 
import whirlpool
  
string = b"GeeksforGeeks"
 
h1 = whirlpool.new(string)
hashed_output = h1.hexdigest()
 
h1.update(b"Geeks")
hashed_output = h1.hexdigest()
 
print("The hashed value is")
print(hashed_output)


输出:

示例 2:

Python3

# Python program to demonstrate
# whirlpool hash function
 
 
import whirlpool
  
string = b"GeeksforGeeks"
 
h1 = whirlpool.new(string)
hashed_output = h1.hexdigest()
 
h1.update(b"Geeks")
hashed_output = h1.hexdigest()
 
print("The hashed value is")
print(hashed_output)

输出: