作者:刘巍然-学酥
链接:https://www.zhihu.com/question/25912483/answer/31653639
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

我们来回顾一下RSA的加密算法。

所以,从算法描述中我们也可以看出:公钥用于对数据进行加密,私钥用于对数据进行解密。当然了,这个也可以很直观的理解:公钥就是公开的密钥,其公开了大家才能用它来加密数据。私钥是私有的密钥,谁有这个密钥才能够解密密文。否则大家都能看到私钥,就都能解密,那不就乱套了。

=================分割线=================

所以,在签名算法中,私钥用于对数据进行签名,公钥用于对签名进行验证。这也可以直观地进行理解:对一个文件签名,当然要用私钥,因为我们希望只有自己才能完成签字。验证过程当然希望所有人都能够执行,大家看到签名都能通过验证证明确实是我自己签的。

=================分割线=================

那么,为什么题主问这么一个问题呢?我们可以看到,RSA的加密/验证,解密/签字过程太像了。同时,RSA体制本身就是对称的:如果我们反过来把e看成私钥,d看成公钥,这个体制也能很好的执行。我想正是由于这个原因,题主在学习RSA体制的时候才会出现这种混乱。那么解决方法是什么呢?建议题主可以学习一下其他的公钥加密体制以及签名体制。其他的体制是没有这种对称性质的。举例来说,公钥加密体制的话可以看一看ElGamal加密,以及更安全的Cramer-Shoup加密。签名体制的话可以进一步看看ElGamal签名,甚至是BLS签名,这些体制可能能够帮助题主更好的弄清加密和签名之间的区别和潜在的联系。至于题主问的加密和签名是怎么结合的。这种体制叫做签密方案(SignCrypt),RSA中,这种签密方案看起来特别特别像,很容易引起混乱。在此我不太想详细介绍RSA中的加密与签字结合的方案。我想提醒题主的是,加密与签字结合时,两套公私钥是不同的。

=======================================================
另外,有人作了下面的举例说明:

(转)刘巍然-关于公钥与私钥相关推荐

  1. SSL中,公钥、私钥、证书的后缀名都是些啥?

    今天做这么一个事, centos服务器,tomcat8+nginx1.6,现在要在上面运行cas4.0. 所以需要配ssl, 然后找教程,了解到,需要把tomcat和nginx的ssl都配置好. 到这 ...

  2. 公钥与私钥,HTTPS详解

    1.公钥与私钥原理 1)鲍勃有两把钥匙,一把是公钥,另一把是私钥 2)鲍勃把公钥送给他的朋友们----帕蒂.道格.苏珊----每人一把. 3)苏珊要给鲍勃写一封保密的信.她写完后用鲍勃的公钥加密,就可 ...

  3. 密码学===公钥和私钥解释

    先前我曾经写了一篇"网站的安全登录认证设计",可能是讲述的不够清楚,有一位读者就留言质疑到,"公钥顾名思义就是公开的啦,只要你愿意,谁都会有你的公钥,何来安全?应该是用网 ...

  4. JAVA产生加密公钥私钥_Java生成非对称型加密的公钥和私钥

    下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. import java.io.*; import java.security.*; imp ...

  5. 公钥和私钥怎么生成_有趣图文帮你通俗易懂地理解公钥和私钥的区别以及与CA证书等概念...

    导读:Linux系统上非对称性加密需要用到公钥.私钥.也常涉及到数字签名.数字证书.CA证书等概念.本文通过有趣的海绵宝宝和它小伙伴故事搭配有趣的图片形式来阐述这些概念,希望能帮助读者更简单易懂地理解 ...

  6. 怎样理解公钥,私钥和数字签名

    怎样理解公钥,私钥和数字签名 一.公钥加密 假设一下,我找了两个数字,一个是1,一个是2.我喜欢2这个数字,就保留起来,不告诉你们(私钥),然后我告诉大家,1是我的公钥. 我有一个文件,不能让别人看, ...

  7. Https 公钥、私钥、证书

    1.https的握手协议: http://blog.csdn.net/clh604/article/details/221799072.证书的概念:http://blog.csdn.net/sealy ...

  8. 支付宝支付 第二集:傻瓜式教程->获取支付的RSA公钥和私钥

    支付宝支付 第二集:傻瓜式教程->获取支付的RSA公钥和私钥 一.步骤 点击文档 点击网页&移动应用 点击配置密钥 点击Web在线加密 先点击生成,再点击保存 返回沙箱的控制台,先点击沙 ...

  9. java生成公钥和私钥_使用Java生成证书,公钥和私钥

    小编典典 您可以使用一对或密钥在Java中动态生成证书.(公钥,私钥).以BigInteger格式获取这些密钥,并检查以下代码以生成证书. RSAPrivateKeySpec serPrivateSp ...

  10. TLS就是SSL的升级版+网络安全——一图看懂HTTPS建立过程——本质上就是引入第三方监管,web服务器需要先生成公钥和私钥,去CA申请,https通信时候浏览器会去CA校验CA证书的有效性...

    起初是因为HTTP在传输数据时使用的是明文(虽然说POST提交的数据时放在报体里看不到的,但是还是可以通过抓包工具窃取到)是不安全的,为了解决这一隐患网景公司推出了SSL安全套接字协议层,SSL是基于 ...

最新文章

  1. boost::signals2模块实现显示插槽通过接口传递的示例程序
  2. SAP Spartacus翻译 i18n - internationalization 的工作原理
  3. #{}不自动改参数类型_如何在不刷新页面的情况下改变URL
  4. [置顶] Z-STACK之OSAL_Nv非易失性存储解读上
  5. kali linux学习入门- Chrome浏览器安装,可以正常打开
  6. Java面向对象-String类
  7. Data Matrix二维码编码原理及其识别技术
  8. Windows下安装使用LAMMPS并运行例子
  9. 迈普路由器访问控制列表配置命令_迈普路由器配置手册
  10. BZOJ 3505: [Cqoi2014]数三角形 数学
  11. 获取Throwable里头的错误信息
  12. w7电脑蓝屏怎么解决_win7电脑蓝屏怎么解决
  13. HTML5自动换行的间距设置,div css p段落行高行距怎么设置篇
  14. 4款国产良心软件,完全免费,其中两款一直被误认为外国人开发
  15. 中测康苑——企业文化
  16. Vibrator motor驱动
  17. Unity 背景图片自适应Text长度
  18. 7.4 FIN及其ACK的接收
  19. python3.0正式发布的年份是_来喽,来喽,Python 3.9正式版发布了~~~
  20. 智能定位手环方案开发

热门文章

  1. js !!条件判断或运算的作用
  2. 企业互联网+转型实战:如何进行PB级别数据的架构变迁
  3. 负载均衡技术沙龙2期圆满结束(现场图文、PPT)
  4. flask-login
  5. 点击鼠标出现漂浮字体(自信, 自强, 坚持...)效果实现
  6. 阿里巴巴java开发手册pdf
  7. 分布式系统常用思想和技术
  8. CodeForces - 788B Weird journey 欧拉路
  9. hdu1048(c++)
  10. 智慧解析第20集:破解迷魂术