非对称加密(RSA)详解

前言

        网上搜非对称加密,里面详解说的的确很详细,公式都拉出来了,本文通过简单易懂的方式讲解非对称加密

什么是非对称加密?

对称加密

        先了解一下对称加密,对称加密就是客户端和服务端都有一个共同的秘钥(可以理解为就是字符串);

        客户端用秘钥对要传输的明文参数进行加密,生成一段秘文,用秘文来与服务端传输,这样即使中间被劫持,也无法看到原文;

        服务端拿到秘文后,再用秘钥进行解密,就可以拿到原文了,着整个过程就叫“对称式加密”;

        但是里面存在一个不安全问题,如果哪天客户端的秘钥被暴露了,那么传输中的秘文就可以被解密得到原文;

非对称加密

        刚才说了对称加密以及存在的问题,后来为了解决这一问题,就出现了“非对称式加密”,就是服务端提前生成好一对秘钥,也就是两个秘钥, 一个作为公钥(就是公开全球人都可以知道的),另个作为私钥(这个是私有的,打死都不能说的);

        将公钥交给客户端,客户端使用公钥进行加密,生成秘文传输给服务端,服务端用私钥进行解密就可以得到原文;

        这样即使公钥暴露出去了,那么传输中的秘文也不会被解开。

        我们常见的非对称加密有RSA

       (注意:上面所说只是简单地使用,客户端和服务端,其实应用起来可以更灵活,可以是多个服务端之间通讯,各自生成自己的公私钥,将自己的公钥公布出去,私钥留着自己解密使用。)

java示例

hutool-RSA加密使用示例

//        提前导入jar包 hutool-all
//        获取一对RSA的公秘钥
        KeyPair pair = SecureUtil.generateKeyPair("RSA");
        String privateKeyBase64 = Base64.encode(pair.getPrivate().getEncoded());
        System.out.println(privateKeyBase64);
        String publicKeyBase64 = Base64.encode(pair.getPublic().getEncoded());
        System.out.println(publicKeyBase64);

//        公钥加密 私钥解密
        RSA rsa = new RSA(privateKeyBase64, publicKeyBase64);
        String hello_world = rsa.encryptBase64("hello world", KeyType.PublicKey);
        System.out.println("密文:" + hello_world);
        String decrypt = rsa.decryptStr(hello_world, KeyType.PrivateKey);
        System.out.println("解密:"+decrypt);

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

很搞笑的在打麻将

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值