加密 与解密用的是一样的密钥 (密钥越大,加密越强)。 经常使用的有: DES 、AES。算法
对称加密算法存在几个问题:安全
一、要求提供一条安全的渠道使通信双方在首次通信时协商一个共同的密钥, 双方可能须要借助于邮件和电话等其它相对不够安全的手段来进行协商;并发
二、密钥的数目难于管理。由于对于每个合做者都须要使用不一样的密钥,很难适应开放社会中大量的信息交流;假设两个用户须要使用对称加密方法加密而后交换数据,则用户最少须要2个密钥并交换使用,若是企业内用户有n个,则整个企业共须要n×(n-1) 个密钥,密钥的生成和分发将成为恶梦。函数
三、对称加密算法通常不能提供信息完整性的鉴别, 它没法验证发送者和接受者的身份; 加密
四、对称密钥的管理和分发工做是一件具备潜在危险的和烦琐的过程。对称加密是基于共同保守秘密来实现的,采用对称加密技术的贸易双方必须保证采用的是相同的密钥,保证彼此密钥的交换是安全可靠的,同时还要设定防止密钥泄密和更改密钥的程序。spa
用一对密钥,公钥(public key)和私钥(private key)。私钥只能由一方安全保管,不能外泄,而公钥则能够发给任何请求它的人。非对称加密使用这对密钥中的一个进行加密,而解密则须要另外一个密钥 (公钥加密私钥解密,私钥加密公钥解密)。.net
加密和解密花费时间长、速度慢,不适合对文件加密而只适对少许数据进行加密。 经常使用的有: RSA、DSA、 GPG2.blog
一种单向算法,经过Hash算法对目标信息生成一段特定长度的惟一的Hash值,却不能经过这个Hash值从新得到目标信息。所以Hash算法经常使用在不可还原的密码存储、信息完整性校验等。经常使用的有MD五、SHA( SHA-1, SHA-2, SHA-256...)get
对传输过来的数据进行校验, 数据防篡改。hash
数字签名是个加密的过程,数字签名验证是个解密的过程。
将摘要信息hash加密后的值用发送者的私钥加密,与原文一块儿传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,而后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。若是相同,则说明收到的信息是完整的,在传输过程当中没有被修改,不然说明信息被修改过。 所以数字签名可以验证信息的完整性。
数字信封
数字信封用加密技术来保证只有特定的收信人才能阅读信的内容。
流程:
信息发送方采用对称密钥来加密信息,而后再用接收方的公钥来加密此对称密钥(这部分称为数字信封),再将它和信息一块儿发送给接收方;接收方先用相应的私钥打开数字信封,获得对称密钥,而后使用对称密钥再解开信息。
依旧用对称加密来传送消息,但对称加密所使用的密钥咱们能够经过非对称加密的方式发送出去。
客户端生成随机的对称加密密钥A,请求服务端返回非对称加密的公钥B。客户端用返回的公钥B对生成的A进行加密,并发送给服务服务端,服务端经过非对称加密的密钥C来解析出A。