转载

http://blog.csdn.net/u012467492/article/details/52034835

私钥用来签名的,公钥用来验签的。公钥加密私钥解密是秘送,私钥加密公钥解密是签名

就拿A给B发送经过签名加密信息来说:
1、A对信息签名的作用是确认这个信息是A发出的,不是别人发出的;
2、加密是对内容进行机密性保护,主要是保证信息内容不会被其他人获取,只有B可以获取。

也就是保证整个过程的端到端的唯一确定性,这个信息是A发出的(不是别人),且是发给B的,只有B才被获得具体内容(别人就算截获信息也不能获得具体内容)。

这只是大概说了作用,具体说来,涉及到密钥相关的东西。密钥有公钥和私钥之分。

那么这里一共有两组四个密钥:A的公钥(PUB_A),A的私钥(PRI_A);B的公钥(PUB_B),B的私钥(PRI_B)。

公钥一般用来加密,私钥用来签名。

通常公钥是公开出去的,但是私钥只能自己私密持有。

公钥和私钥唯一对应,用某个公钥签名过得内容只能用对应的私钥才能解签验证;同样用某个私钥加密的内容只能用对应的公钥才能解密。

这时A向B发送信息的整个签名和加密的过程如下:
1、A先用自己的私钥(PRI_A)对信息(一般是信息的摘要)进行签名。
2、A接着使用B的公钥(PUB_B)对信息内容和签名信息进行加密。

这样当B接收到A的信息后,获取信息内容的步骤如下:
1、用自己的私钥(PRI_B)解密A用B的公钥(PUB_B)加密的内容;
2、得到解密后的明文后用A的公钥(PUB_A)解签A用A自己的私钥(PRI_A)的签名。

从而整个过程就保证了开始说的端到端的唯一确认。A的签名只有A的公钥才能解签,这样B就能确认这个信息是A发来的;A的加密只有B的私钥才能解密,这样A就能确认这份信息只能被B读取。

最新文章

  1. IOS-Gesture(手势识别)
  2. js 与或运算符 || && 妙用
  3. 如何为github上的项目添加gif效果图
  4. C#语法小用法
  5. jQuery的图像裁剪插件Jcrop
  6. MySQL高可用读写分离方案预研
  7. hdoj 1226 超级password 【隐图BFS】
  8. 使用Java语言开发微信公众平台(六)
  9. 读论文系列:Deep transfer learning person re-identification
  10. 《java入门第一季》之面向对象(this和super详细分析)
  11. hanlp大辞典
  12. ListView点击事件失效(item里面有button按钮控件)解决方法
  13. A1106. Lowest Price in Supply Chain
  14. jQuery选择器总结 jQuery 的选择器可谓之强大无比,这里简单地总结一下常用的元素查找方法
  15. 自定义锁屏图片 win7
  16. VC 字符串转化和分割
  17. (xxx.55).toFixed(1) 无法正确进位处理
  18. poj3636
  19. hadoop学习之Linux使用
  20. Arrays.sort和Collections.sort实现原理解析

热门文章

  1. linux之 文本编辑 的基础知识点
  2. 一、REACT概述
  3. P 1019 数字黑洞
  4. POJ 1423:Big Number 求N的阶乘的长度 斯特林公式
  5. JS - 局部方法改变全局变量的值
  6. PHP ~ 设置和读取 Cookie
  7. electron app弹出默认对话框后页面失去焦点问题
  8. SQL基础教程(第2版)第5章 复杂查询:5-3 关联子查询
  9. pywin32获得tkinter的Canvas窗口句柄,并在上面绘图
  10. 关于scala工程结构(使用sbt)