当前位置:   article > 正文

【进阶之路】SM4国密算法与实现_sm4加密

sm4加密

有需要的同学可以加我的公众号,以后的最新的文章第一时间都在里面,也可以找我要思维导图

在这里插入图片描述

一、起因

最近在工作中,突然一个交易异常缓慢,调用时间高达40wms,严重影响了整个集群的生产效率。得知这个情况,我开始对整个交易进行剖析,最终发现原来是RSA非对称加密算法的锅。

RSA作为一种非对称的加密算法,其中很重要的一特点是当数据在网络中传输时,用来加密数据的密钥并不需要也和数据一起传送。因此,这就减少了密钥泄露的可能性。RSA在不允许加密方解密数据时也很有用,加密的一方使用一个密钥,称为公钥,解密的一方使用另一个密钥,称为私钥,私钥需要保持其私有性。

RSA非常安全,但是效率却很低,本身的秘钥长度就是1024bit,随着大数解析技术的发展,秘钥的长度还要进一步增加。同时,因为RSA生成随机数解密的时候会对线程加锁,会出现线程拥堵的问题。当然,因为使用RSA加解密的交易并不多,出现拥堵估计是特殊情况。

总而言之,RSA是一种低效的加密方法,用在加密大量数据上面是不合适的,即使是签名之类的地方,能尽量少用也要少用,否则对性能影响很大。

可是能之前的同事写这些代码时候存在局限,在一个对安全性要求不是特别高的地方用RSA进行加密,同时没有考虑到这个模块会有那么多的调用。

于是乎,经过测试和思考,最终决定对加密算法进行升级,用SM4算法。

二、SM4国密算法介绍

SMS4算法是在国内广泛使用的WAPI无线网络标准中使用的加密算法,是一种32轮的迭代非平衡Feistel结构的分组加密算法,其密钥长度和分组长度均为128。SMS4算法的加解密过程中使用的算法是完全相同的,唯一不同点在于该算法的解密密钥是由它的加密密钥进行逆序变换后得到的。

我准备研究SM4算法的时候,中国互联网络信息中心里已经不提供SM4算法的标准文档了,所以只能去网上查阅资料。感谢一文带你学会国产加密算法SM4的java实现方案这篇文章。

1、SM4算法的原理

结构图

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/809954
推荐阅读
相关标签
  

闽ICP备14008679号