SHA256算法学习笔记

本文详细介绍了SHA256算法的填充规则、初始化哈希值和常量的生成,以及哈希计算过程,包括循环右移和逻辑右移的概念,并提供了算法的伪代码流程。
摘要由CSDN通过智能技术生成

输入: L L L bit 待计算的消息

1. 填充

( L + 1 + K + 64 )   m o d   512 ≡ 0 (L + 1 + K + 64) \bmod 512 \equiv 0 (L+1+K+64)mod5120
L L L : 输入消息长度
1 1 1 : 1 bit “1”
K K K : K bit “0”, 使填充后的消息是512的倍数
64 64 64 : 长度L的二进制表示,L必须小于2^64 (超过后64bit就不够表示长度L了)
每个部分都是必须的,就算L+64 mod 512 = 0,那也必须再填充512bit ( 1bit “1” + 511bit “0” )


2. 准备初始hash和常量

[8个哈希初值] h i , i = 0 , 1 , . . , 7 h_i , i=0,1,..,7 hi,i=0,1,..,7 是对自然数中前8个质数(2,3,5,7,11,13,17,19)的平方根的小数部分取前32bit而来

h0 := 0x6a09e667
h1 := 0xbb67ae85
h2 := 0x3c6ef372
h3 := 0xa54ff53a
h4 := 0x510e527f
h5 := 0x9b05688c
h6 := 0x1f83d9ab
h7 := 0x5be0cd19

[64个常量]
8个哈希初值类似,这些常量是对自然数中前64个质数(2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97…)的立方根的小数部分取前32bit而来。

428a2f98 71374491 b5c0fbcf e9b5dba5
3956c25b 59f111f1 923f82a4 ab1c5ed5
d807aa98 12835b01 243185be 550c7dc3
72be5d74 80deb1fe 9bdc06a7 c19bf174
e49b69c1 efbe4786 0fc19dc6 240ca1cc
2de92c6f 4a7484aa 5cb0a9dc 76f988da
983e5152 a831c66d b00327c8 bf597fc7
c6e00bf3 d5a79147 06ca6351 14292967
27b70a85 2e1b2138 4d2c6dfc 53380d13
650a7354 766a0abb 81c2c92e 92722c85
a2bfe8a1 a81a664b c24b8b70 c76c51a3
d192e819 d6990624 f40e3585 106aa070
19a4c116 1e376c08 2748774c 34b0bcb5
391c0cb3 4ed8aa4a 5b9cca4f 682e6ff3
748f82ee 78a5636f 84c87814 8cc70208
90befffa a4506ceb bef9a3f7 c67178f2

3. 哈希计算

在SHA256中,计算基本单位长度为32bit (1字,1word)

下面对一些符号进行定义

R n ( x ) R^n(x) R

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值