密钥就比如一把钥匙,用于打开网络安全的大门。 密钥主要用于对信息的加密,在如今互联网如此发达的社会,愈来愈多的人在网络上进行交流,文件传输,咱们如何保证本身传输的信息不会在中途被人篡改,如何保证咱们传输的信息只能被对方看到, 这就是今天讨论的主题密钥的做用。 密钥又分为对称密钥和非对称密钥,对称密钥是指加密和解密使用的密钥是同一个,非对称密钥是指加密和解密使用不一样的密钥,一般称为公钥和私钥,私钥本身保存,公钥会公布出去,当别人想传输信息给你时,可使用你发布出去的公钥进行加密,而后当你接收到消息后可使用本身保存的私钥进行解密。 对于非对称加密的方式须要注意的是,公钥和私钥必定是成对使用的,即便用私钥加密,只能使用公钥进行解密,或者使用公钥进行加密,只能使用私钥进行解密,不能使用同一个密钥既进行加密又进行解密。算法
想要完成加密解密只使用密钥是不够的,还有一个更重要的就是加密算法,根据前面提到的两种加密方式:对称加密和非对称加密,加密算法也能够分为对称加密算法和非对称加密算法,除此以外还有一种是单向加密算法,下面让咱们详细下不一样的加密算法,以及它们的区别,咱们又该如何选取合适的加密算法。 因为加密算法有不少种,这里只会挑选一些经常使用的算法进行对比介绍。安全
单向加密是一种不可逆的加密,即不能从加密后的信息中再获得原文。 经常使用的单向加密算法有:MD五、SHA、HMAC等。微信
常见的对称加密算法:DES、3DES、AES等。网络
常见的非对称加密算法:RSA、DSA、ECC等。函数
对于加密算法的选择主要从一下角度进行考虑:加密
加密速度 非对称加密算法的运行速度比对称加密算法的速度慢不少,因此当须要加密大量的数据时,建议采用对称加密算法,来提升加密速度。.net
使用限制 签名只能使用非对称加密算法。3d
密钥的管理 对称加密算法,因为加密解密都是使用相同的密钥,所以如何保证密钥的安全性就特别重要,因此如何要加密的数据量很小时,通常就优先考虑使用非对称加密算法。cdn
密钥位数 通常来讲,密钥越长,运行的速度就越慢,应该根据的咱们实际须要的安全级别来选择,通常来讲,RSA建议采用1024位的数字,ECC建议采用160位,AES采用128为便可。blog
在实际的操做过程当中,咱们一般采用的方式是:采用非对称加密算法管理对称算法的密钥,而后用对称加密算法加密数据,这样咱们就集成了两类加密算法的优势,既实现了加密速度快的优势,又实现了安全方便管理密钥的优势。
以下图所示,是一个典型的使用非对称加密算法的流程:
想象一下下面的场景,朋友发微信跟你借钱,你会把钱直接转过去吗? 如今骗子那么多,多少人惨痛的经验高所咱们必定要打电话给你的朋友确认一下是否是他本人。在网络上传输信息也是同样的,你怎么知道信息不会被别人篡改过呢,这时候签名就应运而生了。 数字签名,就是发送者根据待发送的信息和用自身私钥加密的信息摘要组合成数字签名,用户采用本身的私钥对信息加以处理,因为密钥仅为本人全部,这样就产生了别人没法生成的文件,也就造成了数字签名。
在前面介绍数字签名时提到一个概念叫信息摘要(数字摘要),在生成不使用待发送的消息直接生成数字签名,而是先生成信息摘要,而后使用信息摘要来生成数字签名呢?
以下图所示,是一个典型的使用签名的流程:
在上述使使用签名的流程中,因为公钥是公开的,而且能够自行导入到电脑,若是C进入B的电脑,把A的公钥换成本身的公钥,C就能够冒充A给B发送信息。那B如何保证使用的是A的公钥呢, 这时就须要数字证书来帮忙了。 数字证书主要用于鉴别密钥,一般将公钥放到证书里传输。
数字证书不是随便本身就能生成的,而是须要又专门的认证中(Certificate Authority, 简称CA)进行颁发。 认证中心会使用本身的私钥对A的公钥和一些相关信息一块儿加密,生成数字证书。下图展现了一个数字证书包好的一些内容: