协议标准:http://www.sca.gov.cn/sca/xxgk/2010-12/17/1002389/files/302a3ada057c4a73830536d03e683110.pdf

算法处理分如下几步:

  • 消息填充

消息填充分为两部分:第一部分是附加填充比特,第二部分是附加长度,目的是让整个消息满足指定的结构,从而处理起来可以统一化、格式化。

附加填充比特:指在消息尾部进行填充,使报文长度在对512取模后的余数为448。具体操作是:先被1比特1,然后都被0,直到满足对512取模余448。需要注意的是:即使原始消息长度已经满足对512取模余448,补位也需要进行,这时地填充512比特。所以附加填充时至少补1位,最多补512位。

附加长度:将原始数据的长度信息补到已经进行了填充的消息后面。

  • 消息分组

消息分组指将消息填充后的数据按512bit(16*32bit)进行分组,并扩充为132*32bit,扩充算法如下:

当 0 ≤ t ≤ 15  时,W[t] = M[t],M[t]为512bit原始数据中第t个32bit数据。

当 16 ≤ t ≤ 67时,P1(X) = X ⊕ (X <<< 15) ⊕ (X <<< 23)

W[t] = P1(W[t-16] ⊕ W[t-9] ⊕ (W[t-3] <<< 15)) ⊕ (W[t-13] <<< 7) ⊕ W[t-6]

当 68 ≤ t ≤ 131时,W'[i] = W[i] ⊕ W[i+4],其中i=0..63

消息填充和消息分组处理图示如下:

  •  迭代运算

SM3算法对输入的消息进行64轮迭代运算,输出256bit的HASH结果。

SM3处理过程中会用到8个哈希初值和2个哈希常量。

SM3的8个哈希初值分别为:

A=0x7380166F,B=0x4914B2B9,C=0x172442D7,D=0xDA8A0600

E=0xA96F30BC,F=0x163138AA,G=0xE38DEE4D,H=0xB0FB0E4E

2个哈希常量:

0

HASH和HMAC(6):SM3算法原理相关推荐

  1. 【转】HMAC哈希消息认证码及算法原理

    HMAC算法原理 HMAC算法是一种基于密钥的报文完整性的验证方法 ,其安全性是建立在Hash加密算法基础上的.它要求通信双方共享密钥.约定算法.对报文进行Hash运算,形成固定长度的认证码.通信双方 ...

  2. 国密SM3密码杂凑算法原理及实现(附源码)

    相关文章: 国密SM3哈希算法原理及实现(附源码) SHA1哈希算法原理及实现(附源码) MD5哈希算法原理及实现(附源码) MD4哈希算法原理及实现(附源码) MD2哈希算法原理及实现(附源码) M ...

  3. Java算法之 一致性hash算法原理及实现

    为什么80%的码农都做不了架构师?>>>    一致性hash算法原理及实现 转载于:https://my.oschina.net/90888/blog/1645131

  4. 一致性 Hash 算法原理总结

    一致性 Hash 算法是解决分布式缓存等问题的一种算法,本文介绍了一致性 Hash 算法的原理,并给出了一种实现和实际运用的案例: 一致性 Hash 算法背景 考虑这么一种场景: 我们有三台缓存服务器 ...

  5. 国密算法:利用python进行sm3 hash算法,计算hash值,国密算法库gmssl的使用

    本篇介绍利用gmssl算法库中的sm3模块来进行hash值的计算. 一 sm3 hash算法的特点: sm3用于计算一个消息的hash值: 几乎无法被逆向,即通过hash值无法推断出原始消息: sm3 ...

  6. SHA224和SHA256哈希算法原理及实现(附源码)

    相关文章: SHA224和SHA256哈希算法原理及实现(附源码) 国密SM3哈希算法原理及实现(附源码) SHA1哈希算法原理及实现(附源码) MD5哈希算法原理及实现(附源码) MD4哈希算法原理 ...

  7. SHA3系列(KECCAK)哈希算法原理及实现(附源码)

    相关文章: (本文持续更新中) SHA3系列(KECCAK)哈希算法原理及实现(附源码) SHA512系列哈希算法原理及实现(附源码) SHA224和SHA256哈希算法原理及实现(附源码) 国密SM ...

  8. SHA512系列哈希算法原理及实现(附源码)

    相关文章: SHA512系列哈希算法原理及实现(附源码) SHA224和SHA256哈希算法原理及实现(附源码) 国密SM3哈希算法原理及实现(附源码) SHA1哈希算法原理及实现(附源码) MD5哈 ...

  9. PBKDF2算法原理

    PBKDF2算法原理 算法介绍 函数定义 PBKDF2的算法流程 主密钥生成流程图 算法执行步骤 结合SHA-256算法流程图 PBKDF2算法的产生背景 加密工具 参考资料 算法介绍 PBKDF2( ...

最新文章

  1. cmd orcal 中文乱码
  2. RHEL6基础之三RHEL官网获取ISO镜像
  3. HDU 5025Saving Tang Monk BFS + 二进制枚举状态
  4. dubbo web工程示例_分布式开发-Zooker+dubbo入门-Demo
  5. Python+matplotlib绘制等电位面图
  6. Javascript 监控键盘输入事件
  7. 学习《21天学通java(第7版)》之错误收集
  8. 如何重新安装微软应用商店
  9. OneNote | 插件/使用技巧
  10. 同步Buck芯片的自举电容原理解析
  11. flex justify-content: space-around;和justify-content: space-evenly;的区别
  12. 华为哪些手机最先升级鸿蒙,华为鸿蒙升级名单确定,11款机型优先升级,荣耀被暂时遗忘!...
  13. 夜拍王荣耀10 VS同档位旗舰机夜拍功能,实战结果一目了然!
  14. Excel使用---excel2016___2维表转1维表(搬,侵删)
  15. AnyDesk(远程控制软件) 免费版,比Teamviewer好用
  16. 联接无止境!500万台AP潜在大数据流量入口
  17. 【RK按键】按键切换
  18. 什么是RISC-V生态系统?
  19. mysql输出当前是第几周使用week和weekofyear的区别
  20. chrome无法上网

热门文章

  1. Mysql 逻辑运算符详解
  2. 如何用飞书高效线上教学?
  3. mysql 获取最大的平均数_mysql怎么求最大值、最小值和平均值?
  4. 小程序个人免费云函数和数据库读取json/txt文件方法
  5. NC移动报表H5应用介绍可以集成钉钉和企业微信
  6. html怎么在手机打不开,手机打不开(进不去)路由器设置网址怎么办?
  7. 列表、表格、表单思维导图
  8. 最佳实战 | 如何使用微搭低代码基于模板开发小程序
  9. MiniUI 快速上手
  10. VBA获取汉字拼音首字母的函数