公私钥与加密、签名

先明确一下概念: 
公钥加密私钥解密,   没问题,也可以说是 "公共密钥加密系统 " 
私钥加密公钥解密,一般不这么说,应叫 "私钥签名,公钥验证 ",也可以说是“公共密钥签名系统” 

再来说一下 "公共密钥签名系统 "目的:(如果晕就多看几遍,这个没搞清,后面的代码就更晕) 

A欲传(信息)给B,但又怕B不确信该信息是A发的。 
1.A选计算(信息)的HASH值,如用MD5方式计算,得到:[MD5(信息)] 
2.然后用自已的私钥加密HASH值,得到:[私钥(MD5(信息))] 
3.最后将信息与密文一起传给B:传给B:[(信息)   +   私钥(MD5(信息))] 

B接到   :[(信息)   +   私钥(MD5(信息))] 
1.先用相同的HASH算法算出(信息)的HASH值,这里也使用MD5方式   
得到:   [MD5(信息)!] 
2.   再用A的公钥解密   [   私钥(MD5(信息))] 
      [公钥(私钥(MD5(信息)))]   =   [(MD5(信息)] 
      如能解开,证明该   [   私钥(MD5(信息))]是A发送的 
3.再比效[MD5(信息)!]与[(MD5(信息)] 
      如果相同,表示(信息)在传递过程中没有被他人修改过 
再补充一点,非对称密钥的目的是为了实现不对等的身份验证。加密算法在这里只是实现目的的一个手段。 

他不适合大数据块的加密。这种方式还应该用对称密钥加密方法(如DES)  

 注意,我为何说这种方式不叫加密:因为A所发的(信息)至始到尾都是暴露的。 


在个种模式下,任何人都可以看到(信息),也可以修改(信息) 
但如果(信息)被修改了,B可以发现 

所以 "公共密钥加密系统 "叫信封,如我们邮信时的信封,保证内容不被人看到 
“公共密钥签名系统”叫手印,保证收到该信的人能确认发信人身份

 如果要加/解密大段的数据,那么只能公钥加密,私钥解密。但是如果是做签名的话,就像wxwinter说的,用私钥加密签名,公钥验证是可以的。

posted @ 2011-04-22 17:06  Colin_Ye  阅读(1274)  评论(0编辑  收藏  举报