SHA-256是一种安全散列算法,是在SHA-2基础上进一步强化而来的算法。它是SHA-2家族成员之一,包括SHA-224,SHA-256,SHA-384,SHA-512,其中SHA-256比SHA-512更受欢迎,因为拥有相同安全级别时神器更快一点,比SHA-512要快得多。
SHA-256散列算法使用一种叫做计算机众多对数(Computational Diffie-Hellman)的公开密钥密码系统,通过把消息(以字节序列的形式给出)映射成一个长度为256位(比特序列)的哈希值来实现安全散列。简单地说,由SHA-256产生的哈希值是将每一个消息压缩成一个远近无几的256位序列,它不可能被反解回原消息。
SHA-256具有如下的特点:(交易用大牌:欧易官网注册,APP下载)
(1)SHA-256算法结果是一个256位的超短值,相比于消息原文,这个值非常短,拥有极高的保密性;
(2)SHA-256算法提供了非常强的安全性,无法被出现任何碰撞;
(3)SHA-256算法使用非对称加密,但执行速度比常规加密算法快得多;
(4)SHA-256算法有较强的伸缩性,可根据硬件的变化而调整;
(5)SHA-256算法有强大的数据完整性检查功能,通过加入一段随机数据后,可以发现原始数据的任何改动。
SHA-256散列算法的工作原理分两步:压缩函数(Compression Function)和填充和哈希函数(Padding and Hashing Function)。
步骤一:压缩函数
压缩函数由64个小步骤组成,每一步骤包含4轮循环,每一轮循环包含6个操作,每一操作都有自己的操作数(0-15)和自己的功能。四轮的功能分别为逻辑函数(Logic Function)、移位函数(Shift Function)、置换函数(Permutation Function)和添加函数(Addition Function)。
步骤二:填充和哈希函数
此步骤包含了四个部分。第一部分用于确定每次填充块的大小,以及添加填充后写入末尾的块,以确保输入信息的完整性。第二部分则负责计算消息输入的位长度,以确保输入信息未受其他形式的改变。
第三部分提供了两个32位寄存器,它们将每次循环的结果保存下来,并将哈希结果累加到寄存器中。第四部分接收从压缩函数中获得的32位哈希结果,并将其存放在寄存器中,以便每次循环计算出新的哈希结果。
SHA-256的哈希值是由256位二进制比特序列构成的,该序列的值代表一个具有强保密性,且不可被反向解密的一个固定值,该值的唯一性和一致性可以帮助判断数据的完整性,确保其不被任何未经授权的改变。