国密SM3算法

一、关于sm3算法本身

1、分组,将需要加密的文件转为2进制,然后分组为512*K+448(K为任意整数,不够用一个“1”和多个“0”补齐),再加上64位的文件长度信息构成512*(K+1)的分组

2、迭代运算,这里有一个参数(256位)参与运算,初始值V(0)(文档中叫做IV),迭代一次之后得到V(1),后面依次迭代得到V(1)、V(2)、V(3)……V(K)、V(K+1),V(K+1)也就是最终的杂凑值

二、sm3在芯片中的实际使用方法

芯片中有sm3函数的入口,每次只能输入8个字节(64位)的16进制数,所以要把文件拆分成N*8字节,并转为16进制,需要执行sm3函数N次

前面N-1次和最后一次执行函数所用的报文不同,前面N-1次中报文的p1=01(没有返回杂凑值,但是函数中记录下迭代中间结果,作为下一次迭代输入,不输出),最后一次报文的p1=02,(结合上面迭代中间值,输出最终杂凑值)

时间: 2024-11-10 19:30:35

国密SM3算法的相关文章

java 解析国密SM2算法证书

首先说明用Java自带的解析x509证书类,是不能解析sm2算法的证书,运行会抛出异常. 用开源库bouncycastle可以解析.具体代码 private byte[] getCSPK(byte[] csCert) { InputStream inStream = new ByteArrayInputStream(csCert); ASN1Sequence seq = null; ASN1InputStream aIn; try { aIn = new ASN1InputStream(inSt

谈谈PBOC3.0中使用的国密SM2算法

转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/39780825 作者:小马 一 知识准备 SM2是国密局推出的一种他们自己说具有自主知识产权的非对称商用password算法.本身是基于ECC椭圆曲线算法的.所以要讲sm2, 先要弄懂ECC. 全然理解ECC算法须要一定的数学功底.由于涉及到射影平面坐标系,齐次方程求解, 曲线的运算规则等概念. 这里不做过多的数学分析(主要是我自己也没有全然整明确). 想要深入了解ECC的我推荐网

PBOC3.0中使用的国密SM2算法详解

转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/39780825 作者:小马 一 知识准备 SM2是国密局推出的一种他们自己说具有自主知识产权的非对称商用密码算法.本身是基于ECC椭圆曲线算法的,所以要讲sm2, 先要弄懂ECC. 完全理解ECC算法需要一定的数学功底,因为涉及到射影平面坐标系,齐次方程求解, 曲线的运算规则等概念.这里不做过多的数学分析(主要是我自己也没有完全整明白).想要深入了解ECC的我推荐网名为ZMWorm

2017-2018-2 20179204《网络攻防实践》第十三周学习总结 python实现国密算法

国密商用算法是指国密SM系列算法,包括基于椭圆曲线的非对称公钥密码SM2算法.密码杂凑SM3算法.分组密码SM4算法,还有只以IP核形式提供的非公开算法流程的对称密码SM1算法等. 第1节 SM2非对称密码算法原理 国密SM2算法是商用的ECC椭圆曲线公钥密码算法,其具有公钥加密.密钥交换以及数字签名的功能.椭圆曲线参数并没有给出推荐的曲线,曲线参数的产生需要利用一定的算法产生.但在实际使用中,国密局推荐使用素数域256 位椭圆曲线,其曲线方程为y^2= x^3+ax+b.参数如下: 其中p是大

嵌入式设备中支持国密算法的方法

如今国密系列算法的应用已不仅仅局限于金融和电信等领域,诸如车载设备,消费类电子设备等越来越多的产品开始要求有国密算法的支持.但是国密算法的开源资料和应用案例少之又少,如何快速高效的在自己的设备中加入国密算法已经成为众多开发者必须要面对的难题.现在为大家准备了一个系列文章,介绍嵌入式设备中移植国密算法的方法.简单来说,分为三种方法:1.移植Miracl库2.移植Openssl库3.使用加密芯片下面进行简介:1.移植Miracl库MIRACL(Multiprecision Integer and R

推荐一款能支持国密SM2的浏览器——密信浏览器

密信浏览器( MeSince Browser )是基于Chromium开源项目开发的国密安全浏览器,支持国密算法和国密SSL证书,同时也支持国际算法及全球信任SSL证书:密信浏览器使用界面清新,干净.简洁.无广告,提供简洁.快速的浏览体验,满足国密安全合规需求.目前,密信浏览器支持Windows 32位和64位系统,未来将逐步推出Linux.Mac及移动端版本. 密信浏览器的主要特性 1.兼容国密标准和国际标准密信浏览器遵循国家标准<GM/T 0024-2014: SSL ×××技术规范>,支

gmssl国密总结

1.gmssl组成 分为加密和通信两部分 2.加密 主要指的是sm2 sm3 sm4加密算法,以及相关的加密组件 3.通信 指的是gmtls 按照一个 GM/T 0024-2014规范实现的,采用双证书,签名证书+加密证书 4.生成证书 可使用地址https://github.com/jntass/TASSL/tree/master/Tassl_demo/mk_tls_cert 下的SM2certgen.sh生成双证书. 注意:生成请求时指定的摘要算法 在用请求生成证书时并不生效,需要重新指定,

SM3国密算法标准中两个实例的实现

来源于CSDN博客:https://blog.csdn.net/ErErFei/article/details/50998162 代码新增内容:在原博客的基础上,整合了各个类的方法,同时增添了SM3国密标准中的第二个案例的验证,并尝试将原代码中的缓冲区长度修改为64*2,本代码作者是在命令行里面运行通过的,未曾在eclipse环境中运行.如有运行问题,请各位能够反馈,互相学习: public class ren_SM3 { /**IV为256比特初始值,32个字节,修饰为静态最终变量,不可改变,

国密杂凑算法SM3

0. 引言 SM3杂凑算法是中国国家密码局公布的hash算法商用标准,能应用于数字签名与验证.消息认证码的生成以及伪随机数的生成. 1. 常数与函数 1.1 初始值 IV = 7380166f 4914b2b9 172442d7 da8a0600 a96f30bc 163138aa e38dee4d b0fb0e4e 1.2 常量 Tj={ 79cc4519    0≤j≤15:7a879d8a    16≤j≤63} 1.3 布尔函数 FFj(X,Y,Z)={X^Y^Z  0≤j≤15:(X