4个版本
0.1.16-alpha.0 | 2023年3月31日 |
---|---|
0.1.13-alpha.0 | 2023年3月17日 |
0.1.12-alpha.0 | 2023年1月19日 |
0.1.10-alpha.0 | 2023年1月18日 |
#7 in #stages
608 每月下载量
在 86 个crate中使用(通过 bitcoin-hash)
275KB
798 行
Rustcrate描述: bitcoin-ripemd
简短描述
Rust实现比特币系统中使用的RIPEMD-160哈希函数。
详细描述
该bitcoin-ripemd
crate是直接将比特币代码库中C++实现的RIPEMD-160哈希函数翻译成Rust。RIPEMD-160哈希函数在比特币系统中得到广泛使用,尤其是在比特币地址的创建中。
RIPEMD-160哈希函数接受任意长度的输入消息,并生成一个固定长度的160位输出。该函数基于MD4和MD5哈希函数,但进行了一些修改以提高其安全性。
该crate中的实现包括一个Ripemd160
结构体,它表示哈希状态并提供初始化状态、使用新数据更新状态以及最终化哈希以生成160位输出的方法。该crate还包括执行算法的各个轮次和变换的辅助函数。
请注意,由于此crate仍在翻译过程中,一些函数体可能仍在翻译中。
相关数学方程式
虽然bitcoin-ripemd
crate中没有具体的数学方程式或概念,但RIPEMD-160哈希函数基于MD4和MD5哈希函数,而MD4和MD5哈希函数本身使用模运算和位操作的概念。
16>你能教我RIPEMD-160是如何工作的吗?
RIPEMD-160是一种用于各种应用的加密哈希函数,如比特币、OpenPGP和SSH。它是由Hans Dobbertin、Antoon Bosselaers和Bart Preneel设计的,作为原始RIPEMD哈希函数的改进版本,原始RIPEMD哈希函数被发现存在弱点。
RIPEMD-160在512位输入数据块上操作,并生成固定长度的160位输出,使其成为与SHA-1和SHA-2同族的哈希函数。该算法通过一系列的位操作和非线性函数的轮次来转换输入数据并创建输出哈希。
算法首先初始化五个32位整数的状态。然后,对于每个512位输入数据块,状态通过五个轮次进行转换,每个轮次都对状态应用不同的操作集。
前两轮与MD4和MD5哈希函数中使用的轮次类似。它们涉及将状态与输入数据混合,应用非线性函数,以及移位和旋转状态值。
第三和第四轮与SHA-1哈希函数中使用的轮次类似。它们涉及将状态与输入数据混合,应用非线性函数,以及旋转和异或状态值。
第五和最后一轮涉及以固定方式对状态值进行置换,之后将得到的状态与先前状态和输入数据结合,以产生最终的哈希值。
RIPEMD-160被设计成对各种加密攻击具有抵抗力,包括碰撞攻击,其中两个不同的输入产生相同的哈希输出。然而,像所有哈希函数一样,它并不是完全免受攻击,近年来其安全性受到了质疑。尽管如此,它仍然是许多应用中广泛使用的哈希函数。
依赖项
~89MB
~850K SLoC