SHA-256
SHA-256是SHA-2标准里最常见的一个,能够生成256位(32字节)摘要值。注意标准文件使用了大端约定,包括输入长度和输出都是大端。SHA-256的基本结构和MD5是类似的,首先定义几个操作。
(1)32位循环左右移:
(2)32位位操作:
(3)32、64位数的小端到大端转换:
32位转换用到了输出值,所以写成了一个函数。而64位不用留中间值,所以写成一个宏。
SHA-256内部维护32字节状态、32字节临时状态、256字节轮中间值,为了处理任意长度的数据还要设置64字节的缓存,轮中间值每一轮计算都要更新一次。由于和MD5(见前文)一样,这里不再赘述,直接上代码。