国密算法介绍-SM3及摘要算法(签名算法)国际SHA-256
一、引入
由于项目中需要用到hash算法,然而研究生以来都没有接触过真正有关密码算法的项目,今天先了解下国密算法和密码学中应用最广泛的三类算法:
1、对称算法(分组密码算法)代表分组密码算法(DES和SM4);
2、非对称算法(公钥密码算法)代表公钥密码算法(RSA和SM2);
3、杂凑算法(摘要算法)代表摘要算法(HAS-256系列和SM3);
来了解下他们之间的区别和用法。
参考:https://blog.csdn.net/jambeau/article/details/99761661
二、算法区别
2.1分组密码算法——国际DES、国密SM4
分组密码就是将明文数据按固定长度进行分组,然后在同一密钥控制下逐组进行加密,从而将各个明文分组变换成一个等长的密文分组的密码。其中二进制明文分组的长度称为该分组密码的分组规模。
国际的DES算法和国产的SM4算法的目的都是为了加密保护静态储存和传输信道中的数据。
DES算法 | SM4算法 | |
---|---|---|
计算基础 | 二进制 | 二进制 |
算法结构 | 使用标准的算术和逻辑运算、先代替后置换 | 基本轮函数加迭代、含非线性变换 |
计算轮数 | 16轮 | 32轮 |
密钥长度 | 64位 | 128位 |
有效密钥长度 | 56位 | 128位 |
实现性能 | 软件实现慢、硬件实现快 | 软件实现和硬件实现都快 |
安全性 | 较低 | 算法上看,国产SM4算法在计算过程中增加非线性变换,理论上能大大提高其算法的安全性,并且由专业机构进行了密码分析,民间也对21轮SM4进行了差分密码分析,结论均为安全性较高。 |
2.2公钥密码算法(非对称算法)——国际RSA、国密SM2
公钥密码系统与只使用一个密钥的对称传统密码不同,算法是基于数学函数而不是基于替换和置换。公钥密码学是非对称的,它使用两个独立的密钥,即密钥分为公钥和私钥,因此称双密钥体制。双钥体制的公钥可以公开,因此称为公钥算法。
RSA算法 | SM2算法 | |
---|---|---|
计算结构 | 基于特殊的可逆模幂运算 | 基于椭圆曲线 |
计算复杂度 | 亚指数级 | 完全指数级 |
相同的安全性能下所需要的公钥位数 | 较多 | 较少(160位的SM2与1024位的RSA具有相同的安全等级) |
密钥生成速度 | 慢 | 较RSA算法快百倍以上 |
解密加密速度 | 一般 | 较快 |
安全性 | 基于分解大整数的难度 | 基于离散对数问题、fcdlp数学难题 |
2.3摘要算法(签名算法) 国际SHA-256与国密SM3
摘要函数在密码学中具有重要的地位,被广泛应用在数字签名,消息认证,数据完整性检测等领域。摘要函数通常被认为需要满足三个基本特性:碰撞稳固性,原根稳固性和第二原根稳固性。
SM3算法适用于商用密码应用中的数字签名和验证,是在SHA-256基础上改进实现的一种算法。SM3算法采用Merkle-Damgard结构,消息分组长度为512位,摘要值长度为256位。
SM3算法的压缩函数与SHA-256的压缩函数具有相似的结构,但是SM3算法的设计更加复杂,比如压缩函数的每一轮都使用2个消息字。
现今为止,SM3算法的安全性相对较高。安全是智能卡的核心,而算法是安全的基础。
2.3.1国际SHA-256
SHA256原理将算法中可以单独分出的模块,包括常量的初始化、信息预处理、使用到的逻辑运算。
信息的预处理分为两个步骤:附加填充比特和附加长度
附加填充比特
在报文末尾进行填充,使报文长度在对512取模以后的余数是448
填充是这样进行的:先补第一个比特为1,然后都补0,直到长度满足对512取模后余数是448。
需要注意的是,信息必须进行填充,也就是说,即使长度已经满足对512取模后余数是448,补位也必须要进行,这时要填充512个比特。
因此,填充是至少补一位,最多补512位。
例:以信息“abc”为例显示补位的过程。
a,b,c对应的ASCII码分别是97,98,99
于是原始信息的二进制编码为:01100001 01100010 01100011
补位第一步,首先补一个“1” : 0110000101100010 01100011 1
补位第二步,补423个“0”:01100001 01100010 01100011 10000000 00000000 … 00000000
附加长度值
附加长度值就是将原始数据(第一步填充前的消息)的长度信息补到已经进行了填充操作的消息后面。
参考:https://blog.csdn.net/u011583927/article/details/80905740?utm_medium=distribute.pc_relevant.none-task-blog-searchFromBaidu-5.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-searchFromBaidu-5.control
2.3.2国密SM3
国密即国家密码局认定的国产密码算法。主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。
SM1 为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。
SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA。
SM3 消息摘要。可以用MD5作为对比理解。该算法已公开。校验结果为256位。
SM4 无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位。
由于SM1、SM4加解密的分组大小为128bit,故对消息进行加解密时,若消息长度过长,需要进行分组,要消息长度不足,则要进行填充。
SM3算法:SM3杂凑算法是我国自主设计的密码杂凑算法,适用于商用密码应用中的数字签名和验证消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。为了保证杂凑算法的安全性,其产生的杂凑值的长度不应太短,例如MD5输出128比特杂凑值,输出长度太短,影响其安全性。SHA-1算法的输出长度为160比特,SM3算法的输出长度为256比特,因此SM3算法的安全性要高于MD5算法和SHA-1算法。
国密算法介绍-SM3及摘要算法(签名算法)国际SHA-256相关推荐
- 国密算法 SM2 SM3 SM4 及密钥生成
国密算法 SM2 SM3 SM4 方式一:SM2密钥在线生成 SM2密钥在线生成工具 如果你没线下生成工具,可用下面2种线上生成方式之一: 1. sm2密钥在线生成(const.net.cn) 2. ...
- 加解密算法及国密算法介绍
图片内容参看我的网站:www.waltersun.cn 引言 随着信息化的推进,信息安全越来越受到人们的重视.这篇文章简单介绍了常用的密码算法.原理.使用场景,简单比较国密算法,可作为业务使用的入门指 ...
- 国密算法(SM3)java语言的实现:利用bcprov和huttol库来实现SM3算法,国产哈希算法
SM3简介: SM3是国产哈希算法 SM3采用的一种密码散列函数标准,由国家密码管理局于2010年12月17日发布.相关标准为"GM/T 0004-2012 <SM3密码杂凑算法> ...
- 国密算法 SM2 SM3 SM4分别用作什么
非对称加密SM2(可选支持国内SM9)算法实现数据的签名.验签和加解密对称密钥, SM3密码杂凑算法实现数据摘要的生成, 对称密钥SM4加密算法实现对数据内容的加密.
- 浅谈国密算法 SM1、SM2、SM3、SM4
浅谈国密算法 国密算法是我国自主研发创新的一套数据加密处理系列算法.从SM1-SM4分别实现了对称.非对称.摘要等算法功能.特别适合应用于嵌入式物联网等相关领域,完成身份认证和数据加解密等功能.当然, ...
- 国密算法 SM2公钥密码 SM3杂凑算法 SM4分组密码 python代码完整实现
包含SM2公钥密码.SM3杂凑算法和SM4分组密码的国密算法完整工具包完成了.此前分别发布过上述三个算法的代码: SM2:国密算法 SM2 公钥加密 非对称加密 数字签名 密钥协商 python实现完 ...
- 国密浏览器介绍与下载
国密浏览器介绍与下载 密信浏览器 介绍 支持操作系统 下载地址 奇安信可信浏览器(国密开发者专版) 介绍 支持操作系统 下载地址 红莲花安全浏览器 介绍 支持操作系统 下载地址 零信浏览器 介绍 支持 ...
- 国密算法概述介绍(SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、祖冲之密码算法(ZUC))
ttps://blog.csdn.net/SkyChaserYu/article/details/104039272 众所周知,为了保障商用密码的安全性,国家商用密码管理办公室制定了一系列密码标准,包 ...
- 国密算法SM1/SM2/SM3/SM4
原创不易,转载请注明出处. 国密算法由国家密码局发布,今天大概介绍4中国密算法,分别是SM1,SM2,SM3,SM4.他们之间异同通过下表展示. 算法名称 算法分类 算法是否公开 明文最大长度(bit ...
最新文章
- 程序员,勿让岁月偷走你年轻的秀发!
- javascript脚本实现浏览器自动点击(阿里员工秒杀月饼)
- linux配置静态ip
- UVA 10154 Weights and Measures
- Switch语句的参数是什么类型的?
- Servlet规范定义的Servlet 生命周期
- ubuntu镜像源列表
- 【今日CV 计算机视觉论文速览 第120期】Thu, 23 May 2019
- QTextEdit显示中文乱码解决,中文GB2312转Unicode,QString、QByteArray 转换,16进制显示,toUtf8与toLocal8Bit区别
- 图像语义分割(20) 通过图像合成方法检测训练中未出现的类别未知的物体
- Burpsuite1.7.03网站渗透神器最新破解版
- 程序员年薪30W属于第几梯队?
- 电脑端实现微信双开(登录两个微信)
- 博客推广技巧:如何通过博客推广并实现营销
- hdwiki can not connect to mysql_HDWIKI最新版Update注入可修改管理员密码(MYSQL进制技巧)...
- END-TO-END COMPLEX-VALUED MULTIDILATED CONVOLUTIONAL NEURALNETWORK FOR JOINT ACOUSTIC ECHO CANCELLA
- 软考高级考试中有五大证书,哪个更值得考?
- 短波信道模型--多径瑞利信道原理详解及matlab实现
- android 微信分享注册链接显示app的logo出现黑边处理方案
- 机器学习-GridSearchCV scoring 参数设置!