加密算法解析三:SM3

概要

SM3算法中文称为商密3算法,是由中国国家密码局发布的一种杂凑算法(哈希算法)。它性能和安全性大致与SHA256相等。具体国家的发布标准链接:http://www.sca.gov.cn/sca/xwdt/2010-12/17/content_1002389.shtml。

国家密码局发布的算法不仅有SM3,还有SM1、SM2、SM4、SM7、SM9等,它们的设计和结构都不同,并不是SM3的改进或前期版本。比如SM1为一种对称加密算法,安全与性能与AES相当;SM2为椭圆曲线公钥密码算法,安全和性能大于RSA;SM4为分组数据对称加密算法。

步骤

算法也分为:填充、迭代压缩、处理数据、输出这4个步骤。

1、填充:相当于MD5和SHA的补位和添加长度,先增1和若干个0补成对512求模得448的长度,然后再添加原文长度的64位二进制。举例如下:

加密算法解析三:SM3_第1张图片

其中 原文24bit,补位424bit(1个1和423个0),增加长度64bit(原文长度的64位二进制表示)

2、消息扩展:SM3没有直接使用数据分组进行运算,而是先对每个512bit分组进行划分,每个分组划分成16个消息字,再以这16个消息通过函数递推出后面的116个消息字,即每个512bit原文可以产生132个消息字(每个消息字32bit)。具体伪代码如下:

加密算法解析三:SM3_第2张图片

3、压缩:先声明初始值IV=7380166f 4914b2b9 172442d7 da8a0600 a96f30bc 163138aa e38dee4d b0fb0e4e ,分别存在A,B,C,D,E,F,G,H这8个32位变量中。接着压缩函数会使用这8个变量进行64轮计算。具体函数如下:

加密算法解析三:SM3_第3张图片

4、输出:最后的ABCDEFGH组成的256位二进制就是密文,一般用64个(16进制)字符打印。

优缺点

优点:安全性高,虽然说安全性和SHA256相当。但个人认为应该指理论上与SHA256相当,毕竟都是哈希算法以及256位摘要。但实际应该比SHA256更高,毕竟破解不可逆算法就是靠字典库,而SHA256的字典库远大于SM3。

缺点:大数据量下加密速度慢。

使用场景

可使用于数字签名验证,信息验证、随机数生成、密码保存等。

你可能感兴趣的:(信息安全,安全,java,系统安全,网络安全)