RIPEMD 哈希函数
哈希函数是一个在使系统安全方面发挥巨大作用的函数,因为它将提供给它的正常数据转换为固定长度的不规则值。我们可以想象它是我们家中的振动器。当我们将数据放入这个函数时,它会输出一个不规则的值。它输出的不规则值称为“哈希值”。哈希值只是数字,但通常以十六进制编写。计算机将值管理为二进制。哈希值也是一种数据,通常以二进制形式进行管理。
RIPEMD
RIPEMD(RACE Integrity Primitives Evaluation Message Digest)是一组哈希函数,由Hans Dobbertin、Antoon Bosselaers和Bart Preneel于1992年开发。RIPEMD的开发思路是基于MD4,MD4本身就是一个弱哈希函数。它被开发用于 32 位处理器。RIPEMD 的类型:
- RIPEMD-128
- RIPEMD-160
- RIPEMD-256
- RIPEMD-320
在职的
它是 RIPEMD-160 哈希算法的一个子块。消息以 512 比特的块为单位由压缩函数处理,并通过使用 5 个不同版本的该子块的两个流传递,其中常量“k”的值也不同。
RIPEMD 的不同版本
- 第一个 RIPEMD 没有被认为是一个好的散列函数,因为一些设计缺陷导致了一些主要的安全问题,其中一个是 128 位的输出大小太小并且容易被破坏。在下一个版本RIPEMD-128中,设计缺陷被删除,但输出仍然是 128 位,这使得它的安全性降低。
- RIPEMD-160是下一个版本,它将输出长度增加到 160 位,并提高了散列函数的安全级别。此函数旨在替代 128 位散列函数 MD4、MD5 和 RIPEMD-128。
- RIPEMD-256 和 RIPEMD-320是 RIPEMD-128 的扩展,提供与 RIPEMD-160 和 RIPEMD-128 相同的安全性,专为喜欢大哈希值而不是更高安全级别的应用程序而设计。
示例 1:
# Python program to demonstrate
# RIPEMD
import hashlib
# Passing the required algorithm
# as string to the new constructor
x = hashlib.new('ripemd160')
# passing GeeksforGeeks
# to x() which uses
# ripemd 160 algorithm for
# hashing
x.update(b"GeeksForGeeks")
# printing the equivalent hexadecimal
# value.
print("The hexadecimal equivalent of hash is :")
print(x.hexdigest())
输出:
The hexadecimal equivalent of hash is :
1b4470fb3147534653ddca6d7a1b2109b5449089
在上面的示例中, new()
构造函数将算法名称作为字符串并为该算法创建一个对象。然后update()
方法接受一个二进制字符串,以便散列函数可以接受它。 x()
散列函数对其进行编码,然后使用hexdigest()
打印十六进制等效编码字符串。
示例 2:让我们看看是否要找到编码哈希值的字节表示。
# Python program to demonstrate
# RIPEMD
import hashlib
# Passing the required algorithm
# as string to the new constructor
x = hashlib.new('ripemd160')
# passing GeeksforGeeks
# to x() which uses
# ripemd 160 algorithm for
# hashing
x.update(b"GeeksForGeeks")
# printing the equivalent hexadecimal
# value.
print("The byte equivalent of hash is :")
print(x.digest())
输出:
The byte equivalent of hash is :
b'\x1bDp\xfb1GSFS\xdd\xcamz\x1b!\t\xb5D\x90\x89'