手机版 | 登陆 | 注册 | 留言 | 设首页 | 加收藏
当前位置: 网站首页 > 量化交易机器人 > 文章 当前位置: 量化交易机器人 > 文章

SHA一256算法

时间:2022-01-11    点击: 次    来源:网络    作者:佚名 - 小 + 大

20028月,美国标准与技术局正式发布了新的安全哈希算法,也就是SHA2系列函数,其中就包括SHA256函数。这个函数被广泛应用于比特币及其他区块链应用中,用于挖矿、公钥和私钥加密等过程。

在美国标准与技术局公布的FIPS1802标准中,一共定义了4种安全哈希算法:SHA1SHA256SHA384SHA512。所有的4种算法都是迭代的、单向的哈希函数,可以用于处理信息并产生精简的“信息摘要”。这些算法可以用来验证一条信息的完整性:因为对信息的任何改变(不分大小,哪怕是变动一个标点符号)都将产生不同的信息摘要。由于这一特点,在数据签名、信息认证的产生及验证等方面,哈希算法都具有广泛的应用前景。本书中,我们重点介绍SHA256算法。

1.定义和术语

(bit):一个二进制数位,值为01

字节(byte):8位组成一个字节。

(word):根据安全哈希算法,是由32位组成(4字节)64(8字节)组成。

2.参数

下列参数用于算法定义:

a,b,.,..h:w位的字用于计算哈希值H()时用到的工作变量:

H:i位哈希值,H(0)是第一位哈希值,H(N)是最后一位哈希值,决定信息摘要;

H,;;位哈希值的第j位字,如H。“表示哈希值i的最左边的字;Kt:用于哈希计算的1循环的常量;

K:在填补阶段添加到信息中的0的个数;

1:信息M的长度,单位为位(bit);

m:信息块M')的数据位数:

M:用于哈希的信息;

M":第个信息块的第字,如M."表示信息块最左边的那个“字”;n:一个“字”在计算过程中,旋转或移位的位数:

N:填补后的信息中的信息块数:

T:在哈希计算中的临时w位的“字”;

w:一个“字”的位数;

w;:在信息表的第1w位的“字”。

3.符号

下列符号用于安全哈希计算定义,运算对象都是w位的”字”。A按位与运算

V按位或(逻辑或)运算

按位异或(互斥或)运算

按位补码运算

+2"加法

<<左移位运算,x<<n表示去掉字x最左边的n位,然后在右边用n0补充

>>右移位运算,x>>n表示去掉字x最右边的n位,然后在左边用n0补充


4.记数法

一个十六进制数字是指集合0,.,.f}的一个元素。一个十六进制数字代表一个4位的字串,例如,十六进制“7”表示4位字串“0111”,十六进制“a”代表4位字串“1010”。

一个“字”是一个w位的字串,可以表示为一个十六进制数字的序列,要把“字”转换为十六进制数字,每4位字串要转化为与它对等的十六进制数字。

如,32位字串:1010000000000111111100100011,可以表示为“a103fe23;

64位字串:101000010000001111111000100011

00110010111011110011000000011010,

可以表示为a103fe2332ef301a”。

5.字运算

SHA256算法中,定义了以下字运算:

按位逻辑运算:AV,①

2"加法

对于正整数UV来说,“UV计算”就是取U除以V的余数。

运算x+y如下定义:xy代表整数XY,其中,0X<2",0<Y<2"。计算Z=(X+Y)mod2",0<Z<2"Z转换为一个“字”z,z=x+y右移位运算SHR"(x)定义如下:

SHR"(x)=x>>n(其中x是一个w位的字,0<n<2")

‘循环右移”运算ROTR"(x):

ROTR"(x)=(x>>n)V(x<<wn)

其中,x是一个w位的字,n是一个整数,0sn<<w

因此,ROTR"(x)等价于把xn位循环移动到右边。

“循环左移”运算ROTL"(x):

ROTR"(x)=(x<<n)V(x>>wn)

其中,x是一个w位的字,n是一个整数,0<n<w

ROTL"(x)等价于把xn位循环移动到左边。

上述运算中,存在以下等价关系(其中w是固定的):

ROTL"(x)~ROTRwn(x)

ROTL"(x)ROTR"n(x)

6.函数

SHA256使用6个函数,每个函数运行在32位字(xyz表示)的基础上,结果是产生一个新的32

Ch(x,y,z)=(xAy)(xAz)

Maj(x,y,z)=(xAy)(xAz)(yAz)

(256)(x)=ROTR2(x)ROTR'(x)ROTR22(x)

2(0)

E(2389)(x)=ROTR°(x)ROTR"(x)ROTR2S(x)

2(1)

(256)(x)=ROTR'(x)ROTR'8(x)SHR'(x)

(0)

(256)

σ256(x)=ROTR'7(x)ROTR19(x)SHR'"(x)

7.预处理过程

预处理发生在哈希计算开始前,由三步组成:填补信息M、把信息M分割成信息块、设定初始哈希值H(0)

填补信息的过程是这样的:假定信息M的长度为1位,在末尾加上“1”以及k个“0”,其中k是等式1+1+k=448mod512的最小非负解。

接下来添加一个64位的块,等于把1用二进制表示的值。例如,8ASCII码信息“abc”的长度为8x3=24,所以这个信息先加上1位“1”,再加上448(24+1)=4230,最终填补后信息的长度变成512位,如下:

01100001011000100110001000一一0110000

“a”"b”“c"

分割信息块的过程,是将填补后的信息分割成N512位的块,分别表示为M,M(2).....N..如果输人块的512位可以表示为1632位的字,则信息块i的第132位字表示为M。“),下一个32位字是M(i),一直到M(155

设定初始哈希值(H(0)):

每一种安全哈希算法在开始哈希计算前,必须设定初始哈希值(H°0)H'0)的位数和个数取决于最终的“信息摘要”的要求。SHA256的初始哈希值H'0),由如下832位字组成,用十六进制表示如下:H(0)=6a09e667

H(0)=bb67ae85

H20)=3c6ef372

H3(0)=a54ff53a

H4(0)=510e527f

H'0)=9b05688c

H6(0)=1f83d9ab

H,(0)=5be0cd19

8.SHA256的安全哈希计算

SHA256用于对长度为的信息M进行哈希,其中0St。哈希计算过程中包括:(1)6432位字的信息表;(2)8个工作变量,每个都为32;(3)哈希值为832位字。SHA256的最终结果是个256位的信息摘要。

信息表的字标记为Wo,W;,...8个工作变量标记为a,b,C,d,e,f,g,h。哈希值的字标记为H。,H(.......每一个保存初始哈希值H(0),在处理每个信息块之后,由后续的过程哈希值取代,最终的哈希值表示为H(N)SHA256计算过程使用了两个临时的字T1T2

预处理完成后,每个信息块M"M(2)...按以下步骤依次处理:

Fori=1toN

1)准备信息表{W,}

M"

0<t<15

o'2(w._,)+W,_,+'¿31(W,,)+W_i616<1<63

2)用第(i1)个哈希值来初始化8个工作变量:a,b,c,d,e,f,g,ha=H,

b=H(21)

c=H,(1

d=H,(i1)

е=Н,(1)

f=H,s*1

g=H,(i1)

h=H,(1)

3)Fort=0to63

T=h+2'256)(e)+Ch(e,f,g)+K(256)+W,T,=E'2561(a)+Maj(a,b,c)

h=g

g=f

f=e

e=d+T¡

d=c

c=b

b=a

a=T,+T,

4)计算第i个过程哈希值H(i)H("=a+H(21)

H")=b+H(21)H2'=c+H2(11)H(")=d+H(1)H4'=e+H4(1)H,"=f+H,(41)H6')=g+H6'H,")=h+H,(11)

重复14的过程N(即,处理完信息M(N))之后,得到信息M256位信息摘要如下所示:

HoN)|H()H2{N)|HI{)\H{N)}H$N)|H(6)|HI(N)

综合来看,SHA256算法(以及另外三种安全哈希算法)首先对原始信息进行了填补和分块,然后进行数据计算,使原始信息的细微变动也能够在信息摘要中反映出来;在数据计算过程中,通过不断地进行逻辑运算与移位运算等方式,确保结果不可逆推、确保算法结果的唯一性,使数据的加密特性得到保障。具备了这两个方面特征后,SHA256等安全哈希算法成为区块链技术所选择的最适用的加密算法。

当然,上述计算过程对于普通人来说比较复杂和难以理解,目前在网络上有一些网站提供了集成的将任意的普通信息转换为SHA256哈希值的功能,如http://www.xorbin.com/tools/SHA256hashcalculator网站,在信息框中输人任意一段信息,点击“计算SHA256哈希值”按钮,即可生成一段哈希值,也就是最终的信息摘要哈希值。例如,我们输人一段英语新闻:

OnSeptember21,theFedisgonnadoit.Theyregonnahikerates,sayafewboldeconomists.

TheUSeconomyisaddingjobsataratethat's"justenough"formostmembersoftheFed'sFederalOpenMarketComittee(FOMC)tovoteforaratehikethismonth,GoldmanSachs'JanHatziusargued.

DuringtheglobalfinancialcrisistheFederalReservelooseneemonetarypolieyandloweredinterestratesagresivelyinitseffortt0stimulatethetumblingeconomByDeember2008,theFedhadcutisbenchmarkratetoatargetrrangeof00.25%efictveelendingmoneyforfre.Afterwalchingtheeconomygrowforsevenyears,theFedlitieditstargetrangeto0.25%~0.50%inDecember2015.

以上内容由自动炒币软件提供!

上一篇:区块链技术基础

下一篇:注册与认证

备案ICP编号  |   标题:炒数字虚拟加密货币-自动炒币量化交易机器人软件-免费测试  |  地址:自动炒币量化交易机器人软件  |  电话:12345678910  |