当前位置: 首页 > news >正文

SHA-256 算法

SHA-256 是一种 密码学哈希算法(Cryptographic Hash Function),属于 SHA-2(Secure Hash Algorithm 2) 系列,由美国国家安全局(NSA)设计,并由 NIST 于 2001 年发布的。
它的输出固定为 256 位(32 字节),无论输入数据多长,结果长度都相同。


🔹 一、SHA-256 的主要特性

特性说明
输入长度任意长度的消息
输出长度固定 256 位(32 字节)
安全性目前被认为是安全的(截至 2025 年)
抗碰撞性极难找到两个不同的输入得到相同的哈希
抗预映像性极难从哈希值反推出原始输入
确定性同样的输入必然产生同样的输出

🔹 二、SHA-256 工作流程(算法原理)

SHA-256 的计算过程主要包括以下步骤:

  1. 消息填充(Padding)

    • 在消息末尾添加一个 1,然后添加足够的 0,使得长度 ≡ 448 (mod 512)。

    • 最后再附加一个 64 位的原始消息长度(单位:比特)。

  2. 分块处理(Parsing)

    • 将填充后的消息分为多个 512 位块

  3. 初始化哈希值(Initialization)

    • 定义 8 个初始常量:

      H0 = 0x6a09e667
      H1 = 0xbb67ae85
      H2 = 0x3c6ef372
      H3 = 0xa54ff53a
      H4 = 0x510e527f
      H5 = 0x9b05688c
      H6 = 0x1f83d9ab
      H7 = 0x5be0cd19
      

  4. 计算消息调度表(Message Schedule)

    • 每个块生成 64 个 32 位字:

      W0~W15 由块数据直接得到
      Wt = σ1(Wt−2) + Wt−7 + σ0(Wt−15) + Wt−16
      
  5. 64 轮压缩(Compression Rounds)
    每轮使用以下操作:

    然后更新:

    h = g
    g = f
    f = e
    e = d + T1
    d = c
    c = b
    b = a
    a = T1 + T2
    

    其中:

    Ch(x,y,z)  = (x & y) ^ (~x & z)
    Maj(x,y,z) = (x & y) ^ (x & z) ^ (y & z)
    Σ0(x) = ROTR2(x) ^ ROTR13(x) ^ ROTR22(x)
    Σ1(x) = ROTR6(x) ^ ROTR11(x) ^ ROTR25(x)
    σ0(x) = ROTR7(x) ^ ROTR18(x) ^ SHR3(x)
    σ1(x) = ROTR17(x) ^ ROTR19(x) ^ SHR10(x)
    

  6. 更新哈希值(Update State)
    每个数据块处理后,更新 8 个哈希寄存器:

    H0 = H0 + a
    H1 = H1 + b
    ...
    H7 = H7 + h
    
  7. 输出结果
    拼接最终的 8 个 32 位寄存器:

    H = H0 || H1 || H2 || H3 || H4 || H5 || H6 || H7
    

🔹 三、示例(Python 实现)

import hashlibdata = b"hello world"
hash_value = hashlib.sha256(data).hexdigest()print(hash_value)

输出:

b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

🔹 四、应用场景

应用说明
数字签名与 RSA/ECDSA 等结合,验证数据完整性
密码存储常与 salt 一起使用(如 bcrypt、PBKDF2)
区块链比特币的核心哈希算法
完整性校验文件或固件验证(如 sha256sum 命令)

🔹 五、与其他哈希算法的比较

算法输出长度安全性速度备注
MD5128 位已被弃用
SHA-1160 位不安全已弃用
SHA-256256 位安全稍慢推荐
SHA-512512 位更安全用于高安全场合
SHA3-256256 位新标准基于 Keccak 设计
http://www.dtcms.com/a/491026.html

相关文章:

  • 淘宝网官方网站购物商城电子邮件免费注册
  • 网站策划薪资大型网站开发团队
  • 广西建设质监站官方网站成都装修公司招聘装修工人
  • 了解学习Python编程之python基础
  • html5 手机网站页面实例创建全国文明城市宣传栏
  • 10.16QT,mmm
  • 免费做长图网站商城源码价格低 质量好
  • YOLOv1/v2
  • 算法专题十二:二叉树的深搜
  • 建设旅游信息网站的好处职业学院网站建设
  • 【vue】设置时间格式
  • 泰安网站建设方案为网站做一则广告
  • 23种设计模式——状态模式(State Pattern)
  • 管理系统布局框架中都包含哪些要素?导航、面包屑、tab等
  • 制作企业网站的app如何做网校网站
  • 卷积值提取
  • [Android] Alarm Clock Pro 11.1.0一款经典简约个性的时钟
  • 【机器学习算法篇】K-近邻算法
  • K8S高可用集群-二进制部署 + nginx-proxy静态Pod版本
  • 使用Open CASCADE和BRepOffsetAPI_MakePipeShell创建螺旋槽钻头三维模型
  • 邯郸网站制作多少钱网站如何收录
  • 如何区分Android、Android Automotive、Android Auto
  • 企业融资方式有哪几种淄博网站seo价格
  • python - 第五天
  • 凡科网的网站建设怎么做网站 建设 公司
  • 透过浏览器原理学习前端三剑客:HTML、CSS与JavaScript
  • 镇江市网站建设江西省建设厅教育网站上查询
  • dede网站怎么设置首页相亲网站透露自己做理财的女生
  • Docker在已经构建好的镜像中安装包
  • 智慧物流赛项竞赛内容与技能要求深度解析