全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

SHA256加密用法介绍

发布时间:2023-11-22 04:25:56
发布人:xqq

一、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()

sha256加密

相关文章

Dapper框架用法介绍

Dapper框架用法介绍

2023-11-22
JS原生点击事件用法介绍

JS原生点击事件用法介绍

2023-11-22
初学编程100个代码大全

初学编程100个代码大全

2023-11-22
JS模拟鼠标点击事件详解

JS模拟鼠标点击事件详解

2023-11-22

最新文章

武汉新媒体行业公司排名

武汉新媒体行业公司排名

2023-11-01
武汉新媒体就业现状好吗

武汉新媒体就业现状好吗

2023-11-01
武汉全媒体行业发展现状及趋势

武汉全媒体行业发展现状及趋势

2023-10-31
武汉全媒体现状

武汉全媒体现状

2023-10-31