加解密设计三块知识,散列函数(哈希函数),对称加密,非对称加密。
A------------------错综复杂的网络--------------------B
1 散列函数(哈希函数)
他的目的是通过原文和算法生成一段哈希值,然后传递给对方,当对方拿到数据,根据同样的算法求取哈希值,当两个哈希值完全一致,说明原文没有没篡改。也就是说散列函数是为了确保原文的完整性,并不是为了不让外人查看原文。
2 对称加密
AB拥有同样的密钥,当A给B发数据时,通过算法和密钥对原文加密,产生密文,再将密文传给B,网络上的文件是密文,保证其他人不知道原文是什么。
对称加密存在密钥丢失和分发困难的弊端,丢失说的是一旦密钥丢失,失去其安全性,分发困难说的是两台可以通信的计算机无法通过安全的机制共有密钥。
3 非对称加密
A通过算法生成公私密钥对,两个密钥不一样,但是底层有数学关联关系,一个加密,另一个解密。再非对称加密中A通常是服务器,服务器将公钥公之于众,所有人都可以拥有。
当作为客户端的B给A发数据时,用公钥加密,产生密文,传到网络环境,即便其他人获取B的密文,因为没有私钥,也不能解密,即得不到原文。这个过程叫公钥加密。而密文到了A,A私钥解密取原文即可。
但是当A给B回复信息时,由于大家都有公钥,都可以解密,其实A的文件是公之于众的,不存在原文保密的概念。A给B发送文件时保证的是另外两方面:篡改,身份验证。通过散函数求取哈希值,将这个哈希值放到原文(数子摘要),然后私钥加密成密文(数子签名),发给B。B拿到数据,先用公钥解密,能解开说明确实是A发过来的(身份确认),然后对原文进行哈希算法,哈希值一致,说明原文没有篡改。
4 数子证书
安照上述流程,AB通信是没有问题的,但是有一天有病毒入侵计算机,篡改了客户端B的公钥,那么往后B通信就不是和A了,所以B要求A每次传过来数据数,证明自己是A。A去找一个官方机构,再A的原文中添加官方认证即可。