数字证书

开发工具 July 04 2014


 前段时间接手了一个兄弟公司移交过来的项目,其中涉及资金交易安全的模块,采用了数字证书进行加密通讯,学习过程中走了不少弯路。目前工作终于告一段落,总算可以好好整理一下数字证书加密通讯相关的知识了。

 **数字****证书**是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名(来源:百度百科)。换句话说,数字证书就是公钥、签名者及被签名者身份信息的载体,也就是说,签名者证明被签名者的真实有效的身份。比如支付宝首页打开就可看到url地址栏中的绿色标识,点击可看到该证书是第三方证书机构VeriSign公司证明了支付宝的真实身份(如果VeriSign系统被攻破,黑客用它来给危险的网站签名身份,那就危险了。。。当然这种可能性应该微乎其微,毕竟VeriSign可是第三方证书机构的佼佼者)。

 提到证书,就离不开加密,加密算法主要分两种:**对称加密**和**非对称加密**。两者很好区分,加密解密使用的是同一个密钥,则属对称加密;而非对称加密解密使用的是两个不同的密钥——公钥和私钥,其中公钥加密,私钥解密。对称加密包括DES(Data Encryption Standard),3DES(DES的增强),RC2,RC4,RC5,Blowfish以及IDEA(International Data Encryption Algorithm,也是对DES的增强)等;非对称加密有RSA(使用最广泛)、Elgamal、背包算法、Rabin、D-H(Diffie-Hellman)、ECC(椭圆曲线加密算法)。算法真多,具体内容可百度谷歌。

 公司的项目中主要用的是RSA非对称加密算法,所以它是本文的重点。非对称加密,简单讲,就是数据发送方用公钥加密,数据接收方用私钥对密文解密(公钥和私钥成对出现,两者中任意一个都可作为公钥,而另一个作为私钥)。使用非对称加密通讯的基本原理是:![](uploads/2014/07/20140715173054_80358.jpg)

**1.两个系统A和B之间要加密通讯,首先A和B都要分别生成自己的公钥和私钥。**

**2.A和B的公钥交换:A的私钥自己保密,把公钥告诉B;****B的私钥自己保密,把公钥告诉A**

**3.A给B发送信息时,A用B的公钥加密信息,然后发送给B。**

**4.****B收到A发过来的消息后,B用自己的私钥解密该****消息。**

**5.同样的,B可以用A的公钥将响应信息加密后发送给A,然后A用自己的私钥解密。**

在整个通讯过程中,即便有人截获了A与B之间的通信报文,但由于用来解密的私钥在A与B自己手里,所以截获者最终拿到的是无意义的密文,从而保证了通讯的安全。

原文链接:http://ichatter.cn/e6-95-b0-e5-ad-97-e8-af-81-e4-b9-a6.html


欢迎来到阿J小虫的博客

Follow @ichatter on GitHub

最新评论

推荐内容