sha256算法原理:
sha-256算法中输入消息的最大长度不超过2^64比特,输入分组为512比特,输出为256比特的消息摘要。
算法处理包括以下步骤:
第一步:添加填充位。填充消息,使消息的长度与448模512的长度相同(长度448模512)。填充位的数量范围从1到512,填充位串的最高位为1,其余位为0。
就是在消息末尾加一个1,然后加很多个0,直到长度满足mod512448。
为什么是448?因为44864512。第二步将添加原始消息的64位长度信息。
第二步:附上长度值。将64位表示的初始消息的位长(填充前)附加到步骤1的结果中。
之后(低位字节优先)。
步骤3:初始化缓存。256位缓存用于存储哈希函数的中间结果和最终结果。
缓存表示为a0x6a09e667,b0xb67ae85,c0x3c6f372,d0xa54ff53a,
e0x510e527f,f0x9b05688c,g0x1f83d9ab,h0x5be0cd19.
步骤4:处理512位(16个字)包序列。该算法使用六个基本逻辑函数,由64个。
分步迭代运算。每一步都将256位缓存值abcd
hash是借助openssl攻击各种hash函数的工具,openssl支持针对md5crc32sha1sha256和sha512的等长扩展攻击,而md2sha224和sha384算法不受这种攻击的影响,因为它们部分避免了状态变量的输出,不输出所有的状态变量。
sha256是sha-2下细分的算法。
sha-2,其名字来源于securehashalgorithm2(英文:securehashalgorithm2)的缩写,是一种加密哈希函数算法标准,由美国局开发,属于sha算法之一,是sha-1的继承者。
sha-2可以进一步分为六种不同的算法标准。
包括沙-224、sha-256、sha-384、sha-512、sha-512/224和沙-5。12/256。
这些变体的基本结构是相同的,除了在生成的摘要的长度和循环的数量上有一些细微的差别。
回到sha256,说白了就是一个哈希函数。
哈希函数,也称为哈希算法,是一种创建小型数字"指纹"任何种类的数据。哈希函数将消息或数据压缩成摘要,使数据变小,并固定了数据的格式。该函数对数据进行加扰,并重新创建一个称为哈希值(或散列值)的指纹。哈希值通常由一串短的随机字母和数字表示。
对于任何长度的消息,sha256将生成一个256位的哈希值,称为消息摘要。
这个抽象相当于一个长度为32字节的数组,通常用长度为64的十六进制字符串表示。