网站大量收购独家精品文档,联系QQ:2885784924

SM3国密算法如何快速应用?对其实现原理尚未完全掌握,但在紧急使用场景下该如何操作?.docx

SM3国密算法如何快速应用?对其实现原理尚未完全掌握,但在紧急使用场景下该如何操作?.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

想必各位读者此刻都迫切希望了解SM3国密算法的具体应用方法。

无需赘述,我们立即切入正题。

有关加密算法的基础理论知识已附于下文,供您随时查阅。

具体代码详见我上传的网上同名资源。

SM3国密算法是我国自主研发的密码学哈希算法,其核心设计思路是在SHA-256框架基础上进行优化升级。该算法沿用了国际通用的Merkle-Damgard迭代结构,在保证密码强度的同时增强了算法自主可控性。

对于大多数应用场景而言,开发者只需掌握其标准接口调用方法即可,无需深入探究其数学基础与内部实现细节。其算法原理涉及的专业密码学知识并非日常开发必需,只需要正确运用标准算法库完成数据完整性验证等基础功能就行了。

接下来说正题,SM3国密算法主要业务流程无非2个,1加密、2MAC。

1加密

输入,输入数据(任意字节)、输入数据长度

输出,输出数据(32字节,加密结果)、输出数据长度

2MAC

输入,密钥(任意字节)、密钥长度、输入数据(任意字节)、输入数据长度

输出,输出数据(32字节,MAC结果)、输出数据长度

通过上述说明,用户已能掌握SM3国密算法的基本使用方法。

就其技术特性作补充说明:该算法通过将任意长度输入转化为指定长度数据输出,构建了可靠的数据指纹生成机制。

这种特性使其特别适用于需要保障数据完整性的应用场景,如电子签名、数字证书等安全领域。

这里我自己写了一个类,核心部分只用了C、C++语言,实现了以上功能。

类中函数声明见下方:

/*

@param

pstcdData数据

lOperatorType操作类型,1加密、2MAC

(无此参数)lKeyDataBits密钥数据位数

pucKeyData密钥数据(操作类型为1加密时,无此参数;操作类型为2MAC时,大小为任意字节)

lKeyDataSize密钥数据大小(操作类型为1加密时,无此参数)

(无此参数)pucInitValueData初始值数据

(无此参数)lInitValueDataSize初始值数据大小

(无此参数)pucUserIDData用户ID数据

(无此参数)lUserIDDataSize用户ID数据大小

pucInputData输入数据(大小为任意字节)

lInputDataSize输入数据大小

(无此参数)pcucSignData签名数据

(无此参数)lSignDataSize签名数据大小

pucOutputData输出数据(大小为32字节)

lOutputDataSize输出数据大小

@return

0成功、0失败

*/

longSM3(STCalculateData*pstcdData);

具体代码详见我上传的网上同名资源。

附:

算法分类:

1可逆算法

加密过程中需要使用密钥,输入明文后由系统经过密钥和加密算法处理成密文,

这种加密后的数据是可以被解密的,将密钥和密文,经过解密算法处理,

就能解密。

包含对称算法、非对称算法两类。

1.1对称算法(常用于加解密数据、信息摘要)

SM4、DES

1.2非对称算法(常用于加解密数据)

SM2、RSA

2不可逆算法

其特征是加密过程中不需要使用密钥,输入明文后由系统直接经过加密算法处理成密文,

这种加密后的数据是无法被解密的,只有重新输入明文,并再次经过同样不可逆的加密算法处理,

得到相同的加密密文并被系统重新识别后,才能真正解密。

(常用于信息摘要、数据校验)

SM3、CRC、MD、SHA

详细列举:

我国公钥密码(椭圆曲线)算法(即SM2)

加密

公钥数据大小为64字节

输入数据大小为任意字节

输出数据大小为任意字节

解密

私钥数据大小为32字节

输入数据大小为任意字节

输出数据大小为任意字节

签名

私钥数据大小为32字节

用户ID数据大小为任意字节

输入数据大小为任意字节

输出数据大小为64字节

验证

公钥数据大小为64字节

用户ID数据大小为任意字节

输入数据大小为任意字节

签名数据大小为64字节

我国密码散列函数标准(即SM3)

密钥数据大小为任意字节

输入数据大小为任意字节

输出数据大小为32字节

我国分组密码算法(即SM4)

密钥数据大小为16字节

输入数据单个数据大小为16字节

输出数据单个数据大小为16字节

RSA加密算法(RSAalgorithm,即RSA)

加密

公钥数据大小为任意字节

输入数据大小为任意字节

输出数据大小为任意字节

解密

私钥数据大小为任意字节

输入数据大小为任意字节

输出数据大小为任意字节

签名

私钥数据大小为任意字节

输入数据大小为任意字节

输出数据大小为任意字节

验证

公钥数据大小为任意字节

输入数据大小为任意字节

签名数据大小为任意字节

循环冗余校验(CyclicRedu

文档评论(0)

skyksksksksks + 关注
实名认证
内容提供者

谢谢关注

1亿VIP精品文档

相关文档