https://blog.csdn.net/junehappylove/article/details/52288796
文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现所起的作用。接着对
数字证书做一个详细的解释,并讨论一下 windows 中数字证书的管理,最后演示使用 makecert 生成数字证书。如果发现文中有错误的地方,或者有
什么地方说得不够清楚,欢迎指出!
1、基础知识
这部分内容主要解释一些概念和术语,最好是先理解这部分内容。
1.1、公钥密码体制(public-key cryptography)
公钥密码体制分为三个部分,公钥、私钥、加密解密算法,它的加密解密过程如下:
� 加密:通过加密算法和公钥对内容(或者说明文)进行加密,得到密文。加密过程需要用到公钥。
� 解密:通过解密算法和私钥对密文进行解密,得到明文。解密过程需要用到解密算法和私钥。注意,由公钥加密的内容,只能由私钥进行解密,
也就是说,由公钥加密的内容,如果不知道私钥,是无法解密的。
公钥密码体制的公钥和算法都是公开的(这是为什么叫公钥密码体制的原因),私钥是保密的。大家都以使用公钥进行加密,但是只有私钥的持有者才能
解密。在实际的使用中,有需要的人会生成一对公钥和私钥,把公钥发布出去给别人使用,自己保留私钥。
1.2、对称加密算法(symmetric key algorithms)
在对称加密算法中,加密使用的密钥和解密使用的密钥是相同的。也就是说,加密和解密都是使用的同一个密钥。因此对称加密算法要保证安全性的话,
密钥要做好保密,只能让使用的人知道,不能对外公开。这个和上面的公钥密码体制有所不同,公钥密码体制中加密是用公钥,解密使用私钥,而对称
加密算法中,加密和解密都是使用同一个密钥,不区分公钥和私钥。
// 密钥,一般就是一个字符串或数字,在加密或者解密时传递给加密/解密算法。前面在公钥密码体制中说到的公钥、私钥就是密钥,公钥是加密
使用的密钥,私钥是解密使用的密钥。
1.3、非对称加密算法(asymmetric key algorithms)
在非对称加密算法中,加密使用的密钥和解密使用的密钥是不相同的。前面所说的公钥密码体制就是一种非对称加密算法,他的公钥和是私钥是不能相
同的,也就是说加密使用的密钥和解密使用的密钥不同,因此它是一个非对称加密算法。
1.4、RSA 简介
RSA 是一种公钥密码体制,现在使用得很广泛。如果对 RSA 本身有兴趣的,后面看我有没有时间写个 RSA 的具体介绍。
RSA 密码体制是一种公钥密码体制,公钥公开,私钥保密,它的加密解密算法是公开的。 由公钥加密的内容可以并且只能由私钥进行解密,并且由私钥
加密的内容可以并且只能由公钥进行解密。也就是说,RSA 的这一对公钥、私钥都可以用来加密和解密,并且一方加密的内容可以由并且只能由对方进
行解密。
1.5、签名和加密
我们说加密,是指对某个内容加密,加密后的内容还可以通过解密进行还原。 比如我们把一封邮件进行加密,加密后的内容在网络上进行传输,接收者
在收到后,通过解密可以还原邮件的真实内容。
这里主要解释一下签名,签名就是在信息的后面再加上一段内容,可以证明信息没有被修改过,怎么样可以达到这个效果呢?一般是对信息做一个 hash
计算得到一个 hash 值,注意,这个过程是不可逆的,也就是说无法通过 hash 值得出原来的信息内容。在把信息发送出去时,把这个 hash 值加密后做
为一个签名和信息一起发出去。 接收方在收到信息后,会重新计算信息的 hash 值,并和信息所附带的 hash 值(解密后)进行对比,如果一致,就说明
信息的内容没有被修改过,因为这里 hash 计算可以保证不同的内容一定会得到不同的 hash 值,所以只要内容一被修改,根据信息内容计算的 hash 值
就会变化。当然,不怀好意的人也可以修改信息内容的同时也修改 hash 值,从而让它们可以相匹配,为了防止这种情况,hash 值一般都会加密后(也
就是签名)再和信息一起发送,以保证这个 hash 值不被修改。至于如何让别人可以解密这个签名,这个过程涉及到数字证书等概念,我们后面在说到数
字证书时再详细说明,这里您先只需先理解签名的这个概念。
2、一个加密通信过程的演化
我们来看一个例子,现在假设“服务器”和“客户”要在网络上通信,并且他们打算使用 RSA(参看前面的 RSA 简介)来对通信进行加密以保证谈话内
容的安全。由于是使用 RSA 这种公钥密码体制,“服务器”需要对外发布公钥(算法不需要公布,RSA 的算法大家都知道),自己留着私钥。“客户”通过某