千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > SHA256加密用法介绍

SHA256加密用法介绍

来源:千锋教育
发布人:xqq
时间: 2023-11-22 04:25:56 1700598356

一、SHA256加密算法

SHA256加密算法是一种常用的加密算法,能够对输入进行加密,生成一个256位的密文。该算法被广泛应用于信息安全领域,例如数字签名、数据传输等。下面我们将详细介绍该算法的原理和流程。

二、SHA256加密流程

SHA256加密算法的流程如下:

1. 将输入的消息进行填充。
2. 初始化哈希值。
3. 对消息进行迭代压缩。
4. 生成输出。

下面我们将逐一分析每个步骤。

三、SHA256填充

SHA256算法要求输入的消息必须为数据块,每组长度为512位。如果输入消息不足512位,就需要进行填充。填充的具体流程如下:

1. 在消息末尾添加一个"1"。
2. 在末尾添加若干个"0",直到消息总长度为448位。
3. 添加消息长度的二进制表示,填充满一个512位数据块。

例如,对"hello world"进行SHA256加密,需要进行填充。"hello world"的二进制表示如下:

01101000 01100101 01101100 01101100 01101111 00100000 01110111 01101111 01110010 01101100 01100100

添加“1”后:

01101000 01100101 01101100 01101100 01101111 00100000 01110111 01101111 01110010 01101100 01100101 01110101

添加“0”后:

01101000 01100101 01101100 01101100 01101111 00100000 01110111 01101111 01110010 01101100 01100101 011101010000000...00

添加消息长度后:

01101000 01100101 01101100 01101100 01101111 00100000 01110111 01101111 01110010 01101100 01100101 011101010000000...0010111

四、SHA256哈希值初始化

SHA256算法需要使用8个初始哈希值,这些值是事先确定的。具体如下:

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

五、SHA256迭代压缩

SHA256算法将消息块分割成16个子块,每个子块包含32位。然后,通过迭代计算,更新哈希值,最终得到SHA256的输出。

// 循环处理16次
for i in range(0, 16):
    # 每个子块为32位
    w[i] = message_block[i]
    
// 循环处理64次
for i in range(16, 64):
    # 计算当前子块的值
    s0 = right_rotate(w[i-15], 7) ^ right_rotate(w[i-15], 18) ^ (w[i-15] >> 3)
    s1 = right_rotate(w[i-2], 17) ^ right_rotate(w[i-2], 19) ^ (w[i-2] >> 10)
    w[i] = w[i-16] + s0 + w[i-7] + s1
    
// 初始化8个哈希值
a = h0
b = h1
c = h2
d = h3
e = h4
f = h5
g = h6
h = h7

// 迭代处理64次
for i in range(0, 64):
    # 计算T1,T2的值
    s1 = right_rotate(e, 6) ^ right_rotate(e, 11) ^ right_rotate(e, 25)
    ch = (e & f) ^ ((~e) & g)
    temp1 = h + s1 + ch + k[i] + w[i]
    s0 = right_rotate(a, 2) ^ right_rotate(a, 13) ^ right_rotate(a, 22)
    maj = (a & b) ^ (a & c) ^ (b & c)
    temp2 = s0 + maj
    
    # 更新哈希值
    h = g
    g = f
    f = e
    e = d + temp1
    d = c
    c = b
    b = a
    a = temp1 + temp2

六、SHA256输出生成

SHA256算法将经过压缩迭代处理后的最终哈希值转换为256位二进制数,即为SHA256加密的输出。

代码示例

下面是Python实现SHA256加密的示例代码:

import hashlib

def sha256(str):
    sha256 = hashlib.sha256()
    sha256.update(str.encode("utf-8"))
    return sha256.hexdigest()

tags: sha256加密
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT