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

本文探讨了在解决交易效率问题时,从RSA加密算法转向SM4国密算法的原因。SM4是一种32轮迭代的非平衡Feistel结构加密算法,广泛应用于数据传输加密。文中介绍了SM4的原理、应用场景,并提供了Java实现的详细步骤,包括ECB模式的加解密操作。此外,还展示了并发测试的部分结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

在这里插入图片描述

一、起因

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

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

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

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

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

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

二、SM4国密算法介绍

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

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

1、SM4算法的原理

结构图

我们能看出来,明文加上128bit的秘钥,进过多轮变换,最后输出是加密的反序,解密时只是将轮密钥的使用顺序进行逆向进行。

2、SM4加密算法应用场景

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值