【Java日常业务开发】使用SM2非对称算法去实现登录的加密解密,提高安全性

关于非对称的加密算法,有RSA算法,国产的SM2算法,据博主了解的有关资料,SM2加密算法相比于传统的RSA加密算法,在保证安全的前提下,有着更高的性能。

SM2是一种密码学算法,是由中国国家密码管理局于2010年发布的一种椭圆曲线公钥密码算法。它被用作数字签名、密钥交换和加密等安全通信领域。SM2算法采用了基于椭圆曲线离散对数问题的数学原理,提供了一种安全高效的密码学解决方案
主要特点包括:
安全性: 基于圆曲线离散对数问题,这被认为是一个难解的数学难题,提供了较高的安全性.2.性能高效:相较于传统的RSA算法,SM2在保证安全性的前提下,具有更高的性能,特别是在移动设备等资源有限的环境中3.国密标准:SM2是中国国家密码管理局发布的国家标准,适用于中国政府和企业的安全通信需求。
SM2算法涵盖了加密、签名和密钥交换三种功能。在实际应用中,它可以用于安全通信、数字签名、电子认证、数据加密等场景。例如,用于保护金融交易、电子身份认证、电子邮件加密等需要安全性的场景。
需要指出的是,SM2作为一种特定国家的标准,其广泛应用可能受到特定法律、政策和标准的限制,不同国家可能有自己的加密标准和规范。因此,在选择使用加密算法时,需要考虑符合当地法律法规和标准的合规性。

以上对SM2做了一个简单的介绍,接下来开始讲讲它是如何在实际中使用的。
大致思路:博主是选择了公钥进行加密,私钥进行解密。至于加密就是让前端开发人员去进行用SM2实现密码的加密操作,解密则是后端开发人员去实现。
后端工作:根据SM2生成一对密钥对(公钥与私钥),将公钥利用接口传输给前端,前端根据这个公钥使用SM2算法对用户的密码进行加密,这样在传输的过程中就可以以密文的形式传输给服务器,后端服务拿着这个密文根据生成的私钥进行解密操作,将密文解密为明文(这个明文与用户在登录界面输入的密码是一样的),然后再去进行密码的校验登录操作。

@Bean
    public  SM2KeyPair generateKeyPair(){
        SM2 sm2 = SM2.Instance();
        AsymmetricCipherKeyPair key = sm2.ecc_key_pair_generator.generateKeyPair();
        ECPrivateKeyParameters ecpriv = (ECPrivateKeyParameters) key.getPrivate();
        ECPublicKeyParameters ecpub = (ECPublicKeyParameters) key.getPublic();
        BigInteger privateKey = ecpriv.getD();
        ECPoint publicKey = ecpub.getQ();
        SM2KeyPair sm2KeyPair = new SM2KeyPair(Util.byteToHex(publicKey.getEncoded(false)), Util.byteToHex(privateKey.toByteArray()));
        return  new SM2KeyPair(Util.byteToHex(publicKey.getEncoded(false)),Util.byteToHex(privateKey.toByteArray()));
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值