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

SM3哈希算法的FPGA实现 I

SM3哈希算法的FPGA实现 I

      • SM3哈希算法的FPGA实现 I
      • 一、什么是SM3哈希算法?
      • 二、SM3哈希算法的具体内容
        • 1、填充
        • 2、迭代与压缩
        • 3、计算拼凑值
      • 三、参考文档

语言 :verilog
仿真工具: Modelsim
EDA工具:quartus II

一、什么是SM3哈希算法?

安全散列算法(英语:Secure Hash Algorithm,缩写为SHA)是一个密码散列函数家族,是FIPS所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。

SM3算法也是一种哈希算法,中国国家密码管理局在2010年发布,其名称是SM3密码杂凑算法。
在商用密码体系中,SM3主要用于数字签名及验证、消息认证码生成及验证、随机数生成等。

二、SM3哈希算法的具体内容

SM3算法结果为256位,其大体上与SHA256相同,其算法过程如下:

1、填充

SM3对消息长度小于为2^64位进行运算,其填充方法与SHA256的相同,假设消息m 的长度为l 比特。首先将比特“1”添加到消息的末尾,再添加k 个“0”,k是满足l + 1 + k = 448mod512 的最小的非负整数。然后再添加一个64位比特串,该比特串是长度l的二进制表示。填充后的消息m′ 的比特长度为512的倍数。
在这里插入图片描述

2、迭代与压缩

这个过程与其他HASH算法类似,先进行消息扩展,之后迭代与压缩,其详细过程可参考标准文档。其扩展与压缩计算以循环移位为主,并有异或计算。
在这里插入图片描述

在消息扩展使用,计算式比较长:

W[j] = P1( W[j-16] ^ W[j-9] ^ ROTL(W[j-3],15)) ^ ROTL(W[j - 13],7 ) ^ W[j-6];
在这里插入图片描述在这里插入图片描述

3、计算拼凑值

填充的消息经扩展后在进行64轮迭代,最后就算出杂凑结果
在这里插入图片描述

三、参考文档

中华人民共和国密码行业标准


http://www.kler.cn/a/4762.html

相关文章:

  • webpack打包要义
  • JVM 触发类加载的条件有哪些?
  • Element-plus、Element-ui之Tree 树形控件回显Bug问题。
  • 相加交互效应函数发布—适用于逻辑回归、cox回归、glmm模型、gee模型
  • 【Unity 手写PBR】Build-in管线:实现间接光部分
  • 基于springboot实现家政服务管理平台【源码+论文】
  • 《Netty》从零开始学netty源码(十七)之AbstractUnsafe
  • 2023年湖北省建筑八大员(建设厅七大员)报考流程和拿证流程来咯!
  • 【redis】redis淘汰策略
  • 推荐一款自动生成财务报表分析的软件
  • 中介变量、调节变量与协变量
  • 人事文件签署单调、重复、繁重?君子签电子合同提升HR工作质效
  • Ajax:服务器的基本概念与初识Ajax
  • [水]与ChatGPT谈Java
  • 怎么将pdf压缩?pdf文件如何压缩?
  • 文心一言发布前一天,GPT-4震撼发布
  • 即时零售:不可逆的进化
  • 【WEB前端进阶之路】 HTML 全路线学习知识点梳理(下)
  • Air700E开发板|移芯EC618|4G Cat.1模组:概述及PinOut
  • vue3+SpringBoot+postgresql 项目前后端传参
  • 【为什么要用线程池】
  • Java 接口过滤为null 的字段
  • 19. 添加异步日志——3.继续完善
  • 限流的几种方案