加密,编码三问

时间:2022-07-25
本文章向大家介绍加密,编码三问,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

网络通信中最重要的就是数据部分,而保证数据的正确安全传输,就要牵扯到数据的编码和数据的加密问题,今天的三问就是关于编码和加密:

  • 介绍对称加密和非对称加密
  • 数字签名的原理
  • Base64算法是什么,是加密算法吗?

介绍对称加密和非对称加密

1)对称加密,即加密和解密算法不同,但是密钥相同。比如DES,AES算法。

数据A --> 算法D(密钥S)--> 加密数据B
加密数据B --> 算法E(密钥S)--> 数据A

优点:缺点:密钥有可能被破解,容易被伪造。传输过程中一旦密钥被其他人获知则可以进行数据解密。

2)非对称加密,即加密和解密算法相同,但是密钥不同。私钥自己保存,公钥提供给对方。比如RSA,DSA算法。

数据A --> 算法D(公钥)--> 加密数据B
加密数据B --> 算法D(私钥)--> 数据A

优点:安全,公钥即使被其他人获知,也无法解密数据。缺点:需要通信双方都有一套公钥和私钥

数字签名的原理

1)首先,为什么需要数字签名?防止被攻击,被伪造。由于公钥是公开的,别人截获到公钥就能伪造数据进行传输,所以我们需要验证数据的来源。

2)怎么签名?由于公钥能解密 私钥加密的数据,所以私钥也能解密 公钥加密的数据。(上图非对称加密A和B代号互换即可) 所以我们用公钥进行加密后,再用私钥进行一次加密,那么私钥的这次加密就叫签名,也就是只有我自己可以进行加密的操作。所以传输数据流程就变成了加密数据和签名数据,如果解出来都是同样的数据,那么则数据安全可靠。

数据A --> 算法D(公钥)--> 加密数据B
数据A --> 算法D(私钥)--> 签名数据C

加密数据B --> 算法D(私钥)--> 数据A
签名数据C --> 算法D(公钥)--> 数据A

Base64算法是什么,是加密算法吗?

  • Base64是一种将二进制数据转换成64种字符组成的字符串的编码算法,主要用于非文本数据的传输,比如图片。可以将图片这种二进制数据转换成具体的字符串,进行保存和传输。
  • 严格来说,不算。虽然它确实把一段二进制数据转换成另外一段数据,但是他的加密和解密是公开的,也就无秘密可言了。所以我更倾向于认为它是一种编码,每个人都可以用base64对二进制数据进行编码和解码。
  • 面试加分项:为了减少混淆,方便复制,减少数据长度,就衍生出一种base58编码。去掉了base64中一些容易混淆的数字和字母(数字0,字母O,字母I,数字1,符号+,符号/) 大名鼎鼎的比特币就是用的改进后的base58编码,即Base58Check编码方式,有了校验机制,加入了hash值。