hash
hash算法
打算了解一下各个hash算法的细节,防止在看到伪代码时不认识
MD5
MD5加密原理步骤
- 在MD5算法中,首先需要对信息进行填充,使其位长对512求余的结果等于448,并且填充必须进行(N*512+448)
- 初始化变量,以大端字节序来表示,他们分别为: A=0x01234567,B=0x89ABCDEF,C=0xFEDCBA98,D=0x76543210(每一个变量给出的数值是高字节存于内存低地址,低字节存于内存高地址,即大端字节序。在程序中变量A、B、C、D的值分别为0x67452301,0xEFCDAB89,0x98BADCFE,0x10325476)
- 处理分组数据
以下是每次操作中用到的四个非线性函数(每轮一个)。
F( X ,Y ,Z ) = ( X & Y ) | ( (X) & Z )Z) )
G( X ,Y ,Z ) = ( X & Z ) | ( Y & (
H( X ,Y ,Z ) =X ^ Y ^ Z
I( X ,Y ,Z ) =Y ^ ( X | (~Z) )
- MD5 是一种基于迭代和压缩的哈希函数,其核心是对输入数据进行多轮的位运算和逻辑操作。
- 常量值:MD5 使用特定的常量(如 0x67452301, 0xEFCDAB89 等)在计算过程中。如果在代码中看到这些特定的常量,特别是在加法操作中,通常指向 MD5 或类似算法。
- 处理输入数据的方式:MD5 通常处理输入数据为 512 位(64 字节)块,将每个块分为多个 32 位(4 字节)单元进行处理。
hash
https://fogpost.top/2024/10/28/hash/