在使用RSA非对称加密的时候,我们会发现里面出现Base64的身影,那他们之间有什么关系呢?
一、RSA是加密算法,非对称加密,拥有两把密钥,一把公钥,一把私钥。
通信双方会分别生成一对公私钥,双方交换公钥。通信过程会传输加密文本和签名。
加密解密过程:服务器会把公钥发送给每一个客户端,客户端在向服务器发送数据时,用公钥进行加密,但是最终解密数据不是用公钥,而是通过私钥解密,私钥不会发给任何人,只会牢牢保护在服务端。
加密:是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击,其重点在于数据的安全性。
加签验签过程:客户端在向服务器发送数据时,首先利用MD5等HASH算法对需要传输的文本计算摘要值,然后利用私钥对摘要值进行加密,得到的密文即被称为该次传输过程的签名。数据接收端,拿到签名后利用自己持有的公钥对签名进行解密(密钥对中的一种密钥加密的数据必定能使用另一种密钥解密),得到文本的摘要,然后使用与发送方同样的HASH算法对文本计算摘要值,再与解密得到的摘要做对比,发现二者完全一致,则说明文本没有被篡改过。
加签:目的是确认该文本是否是发送端发出的内容,中途是否曾经被篡改。
公钥加密 --- 私钥解密
私钥加签 --- 公钥验签
二、Base64不是加密解密算法,只是个编码解码的算法。
Base64和RSA相伴相生,主要是为了防止乱码的产生,加密的数据只是改变其形式不出现乱码,但是发出和接收时数据未发生改变。
Base64流程:
1.原有的公钥Key文件中存放的Base64格式的公钥,那么我们读取回来进行使用,就需要先用Base64解码,获取我们原有的公钥字节
2.加密数据
3.把加密的数据提交给服务器,但是加密过的数据是一堆乱码,直接提交会有问题,所以我们再将这些乱码用Base64进行编码
4.将来服务器收到我们的数据,需要先用Base64解码,获取到原始加密数据
5.用私钥解密