HASH算法的处理过程都可抽象为如下流程,不同算法在不同步骤的处理存在差异:
算法 | 消息填充 | 消息分组 | 迭代运算 (轮数) | 摘要长度 (bit) | |
分组长度 | Word长度 | ||||
MD5 | len(m) mod 512 = 448 | 512 | 32 | 4 | 128 |
SHA-1 | len(m) mod 512 = 448 | 512 | 32 | 80 | 160 |
SHA-224 | len(m) mod 512 = 448 | 512 | 32 | 64 | 224 |
SHA-256 | len(m) mod 512 = 448 | 512 | 32 | 64 | 256 |
SHA-384 | len(m) mod 1024 = 896 | 1024 | 64 | 80 | 384 |
SHA-512 | len(m) mod 1024 = 896 | 1024 | 64 | 80 | 512 |
SHA-512/224 | len(m) mod 1024 = 896 | 1024 | 64 | 80 | 224 |
SHA-512/256 | len(m) mod 1024 = 896 | 1024 | 64 | 80 | 256 |
SM3 | len(m) mod 512 = 448 | 512 | 32 | 64 | 256 |
SHA3-224 | len(m) mod r(=1152) = 0 | 1600 = 1152 + 448 | 64 | 24 | 224 |
SHA3-256 | len(m) mod r(=1088) = 0 | 1600 = 1088 + 512 | 64 | 24 | 256 |
SHA3-384 | len(m) mod r(=832) = 0 | 1600 = 832 + 768 | 64 | 24 | 384 |
SHA3-512 | len(m) mod r(=576) = 0 | 1600 = 576 + 1024 | 64 | 24 | 512 |