Algorithm

SHA256 哈希算法原理和 Rust 实现

介绍 作为日常生活中每个网络用户都会使用的算法,SHA256 的原理可能却鲜有人知。 SHA256 的输入是任意长度的字节串,输出是一个 256 bit 的字节串。例如, 输入:字符串 abc(相当于字节数组 [0x6c, 0x65, 0x73, 0x73, 0x2d, 0x62, 0x75, 0x67, 0x2e, 0x63, 0x6f, 0x6d]) 输出: 1[0x20, 0x1a, 0xb7, 0x03, 0x64, 0x78, 0xee, 0x8a, 0xba, 0x2e, 0xb3, 0xc7, 0xc0, 0xc6, 0x5b, 0x8b, 0x17, 0x49, 0x58, 0x52, 0xf4, 0xeb, 0xe1, 0x5b, 0x79, 0xe5, 0x34, 0x39, 0x6f, 0x29, 0x0c, 0x5b] 示例 我们以 less-bug.com 为例,来演示 SHA256 的计算过程。 我们有 8 个特殊的常量,成为初始哈希变量(initial hash variables),它们是 32 位无符号整数,用十六进制表示如下: 1static H: [u32; 8] = [ 2 0x6a09e667, 3 0xbb67ae85, 4 0x3c6ef372, 5 0xa54ff53a, 6 0x510e527f, 7 0x9b05688c, 8 0x1f83d9ab, 9 0x5be0cd19, 10]; 它们之所以是这些值,其实是发明算法的人自己选的。他从自然数中前 8 个质数的平方根的小数部分中,取前 32 位作为初始值。 Read more...
1 of 1