• 加密算法RSA和Base64的关系


    在使用RSA非对称加密的时候,我们会发现里面出现Base64的身影,那他们之间有什么关系呢?

    一、RSA是加密算法,非对称加密,拥有两把密钥,一把公钥,一把私钥。

    通信双方会分别生成一对公私钥,双方交换公钥。通信过程会传输加密文本和签名。

    加密解密过程:服务器会把公钥发送给每一个客户端,客户端在向服务器发送数据时,用公钥进行加密,但是最终解密数据不是用公钥,而是通过私钥解密,私钥不会发给任何人,只会牢牢保护在服务端。

    加密:是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击,其重点在于数据的安全性。

    加签验签过程:客户端在向服务器发送数据时,首先利用MD5等HASH算法对需要传输的文本计算摘要值,然后利用私钥对摘要值进行加密,得到的密文即被称为该次传输过程的签名。数据接收端,拿到签名后利用自己持有的公钥对签名进行解密(密钥对中的一种密钥加密的数据必定能使用另一种密钥解密),得到文本的摘要,然后使用与发送方同样的HASH算法对文本计算摘要值,再与解密得到的摘要做对比,发现二者完全一致,则说明文本没有被篡改过。

    加签:目的是确认该文本是否是发送端发出的内容,中途是否曾经被篡改。

    公钥加密 --- 私钥解密
    私钥加签 --- 公钥验签  


    二、Base64不是加密解密算法,只是个编码解码的算法。

    Base64和RSA相伴相生,主要是为了防止乱码的产生,加密的数据只是改变其形式不出现乱码,但是发出和接收时数据未发生改变。

    Base64流程:

    1.原有的公钥Key文件中存放的Base64格式的公钥,那么我们读取回来进行使用,就需要先用Base64解码,获取我们原有的公钥字节
    2.加密数据
    3.把加密的数据提交给服务器,但是加密过的数据是一堆乱码,直接提交会有问题,所以我们再将这些乱码用Base64进行编码
    4.将来服务器收到我们的数据,需要先用Base64解码,获取到原始加密数据
    5.用私钥解密

  • 相关阅读:
    Java多线程
    2018腾讯校招软件开发岗在线笔试题
    2018京东校招Java笔试题
    计模式之中介者、观察者
    值得注意的Java基础知识
    Java的内部类
    用静态内部类实现单例模式
    String,StringBuilder区别,一个是常量,一个是可变量
    ArrayList list = new ArrayList()在这个泛型为Integer的ArrayList中存放一个String类型的对象
    List<String> list=new ArrayList<String>(20);为什么要声明为List 而不是ArrayList<String>?
  • 原文地址:https://www.cnblogs.com/coderxiaobai/p/16287662.html
Copyright © 2020-2023  润新知