转载来自https://www.zhihu.com/question/25912483/answer/31653639

RSA的加密算法

RSA的加密算法。我们从公钥加密算法和签名算法的定义出发,用比较规范的语言来描述这一算法。RSA公钥加密体制包含如下3个算法:KeyGen(密钥生成算法),Encrypt(加密算法)以及Decrypt(解密算法)。。密钥生成算法以安全常数作为输入,输出一个公钥PK,和一个私钥SK。安全常数用于确定这个加密算法的安全性有多高,一般以加密算法使用的质数p的大小有关。越大,质数p一般越大,保证体制有更高的安全性。在RSA中,密钥生成算法如下:算法首先随机产生两个不同大质数p和q,计算N=pq。随后,算法计算欧拉函数。接下来,算法随机选择一个小于的整数e,并计算e关于的模反元素d。最后,公钥为PK=(N, e),私钥为SK=(N, d)。。加密算法以公钥PK和待加密的消息M作为输入,输出密文CT。在RSA中,加密算法如下:算法直接输出密文为。解密算法以私钥SK和密文CT作为输入,输出消息M。在RSA中,解密算法如下:算法直接输出明文为。由于e和d在下互逆,因此我们有:所以,从算法描述中我们也可以看出:公钥用于对数据进行加密,私钥用于对数据进行解密。当然了,这个也可以很直观的理解:公钥就是公开的密钥,其公开了大家才能用它来加密数据。私钥是私有的密钥,谁有这个密钥才能够解密密文。否则大家都能看到私钥,就都能解密,那不就乱套了。

RSA签名体制

回顾一下RSA签名体制。签名体制同样包含3个算法:KeyGen(密钥生成算法),Sign(签名算法),Verify(验证算法)。。密钥生成算法同样以安全常数作为输入,输出一个公钥PK和一个私钥SK。在RSA签名中,密钥生成算法与加密算法完全相同。。签名算法以私钥SK和待签名的消息M作为输入,输出签名。在RSA签名中,签名算法直接输出签名为。注意,签名算法和RSA加密体制中的解密算法非常像。。验证算法以公钥PK,签名以及消息M作为输入,输出一个比特值b。b=1意味着验证通过。b=0意味着验证不通过。在RSA签名中,验证算法首先计算,随后对比M’与M,如果相等,则输出b=1,否则输出b=0。注意:验证算法和RSA加密体制中的加密算法非常像。所以,在签名算法中,私钥用于对数据进行签名,公钥用于对签名进行验证。这也可以直观地进行理解:对一个文件签名,当然要用私钥,因为我们希望只有自己才能完成签字。验证过程当然希望所有人都能够执行,大家看到签名都能通过验证证明确实是我自己签的。

总结:

1.使用私钥加密,公钥解密,用于让所有公钥所有者验证私钥所有者的身份并且用来防止私钥所有者发布的内容被篡改.但是不用来保证内容不被他人获得.

2.使用公钥加密,私钥解密,用于向公钥所有者发布信息,这个信息可能被他人篡改,但是无法被他人获得.

3.如果甲想给乙发一个安全的保密的数据,那么应该甲乙各自有一个私钥,甲先用乙的公钥加密这段数据,再用自己的私钥加密这段加密后的数据.最后再发给乙,这样确保了内容即不会被读取,也不会被篡改.

RSA非对称加密算法之公钥和私钥详细介绍相关推荐

  1. Java 实现 RSA 非对称加密算法-加解密和签名验签

    1. 非对称加密算法简介 非对称加密算法又称现代加密算法,是计算机通信安全的基石,保证了加密数据不会被破解.与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密(pr ...

  2. python能解密java的_实现Java加密,Python解密的RSA非对称加密算法功能

    摘要 因为最近业务需要使用到openssl的rsa非对称加密算法,研究了下它的使用方式,但是特殊在于前端分IOS和android两端,所以前端部门要求使用java给他们做一个加密工具包,但是因为服务端 ...

  3. java python rsa加密_实现Java加密,Python解密的RSA非对称加密算法功能

    摘要 因为最近业务需要使用到openssl的rsa非对称加密算法,研究了下它的使用方式,但是特殊在于前端分IOS和android两端,所以前端部门要求使用java给他们做一个加密工具包,但是因为服务端 ...

  4. java 公匙私匙_Java生成非对称型加密公钥和私钥的方法

    本文实例讲述了Java生成非对称型加密公钥和私钥的方法.分享给大家供大家参考.具体如下: 非对称型加密非常适合多个客户端和服务器之间的秘密通讯,客户端使用同一个公钥将明文加密,而这个公钥不能逆向的解密 ...

  5. RSA 非对称加密算法详细介绍

    背景 RSA 算法大家肯定都听说过了,它是一种常见的非对称加密算法,常用来对一些在网络上传输的敏感信息进行加密. 但具体流程不知道大家清楚不?本文将概述 RSA 算法的流程,并用一个简单示例进行阐述, ...

  6. 秘密的爱:初窥RSA非对称加密算法

    hello,everybody! 来一个迟到的七夕祝福! 场景: 假设李雷和韩梅梅生活在1984一样的一个极权世界,七夕到了,李雷想向韩梅梅表达爱意.但是他又不能以明文给韩梅梅传递这个信息.要不big ...

  7. .NET Core加解密实战系列之——RSA非对称加密算法

    简介 加解密现状,编写此项目的背景: 需要考虑系统环境兼容性问题(Linux.Windows) 语言互通问题(如C#.Java) 网上资料版本不一.不全面 .NET官方库密码算法提供不全面,很难针对其 ...

  8. Python RSA加密与解密 公钥和私钥 读写pem文件

    非对称加密算法: 文件加密需要公开密钥(publickey)和私有密钥(privatekey). 接收方在发送消息前需要事先生成公钥和私钥,然后将公钥发送给发送方.发送放收到公钥后,将待发送数据用公钥 ...

  9. RSA 非对称加密算法简述

    RSA概述 首先看这个加密算法的命名.很有意思,它其实是三个人的名字.早在1977年由麻省理工学院的三位数学家Rivest.Shamir 和 Adleman一起提出了这个加密算法,并且用他们三个人姓氏 ...

最新文章

  1. BZOJ3261 最大异或和 解题报告(可持久化Trie树)
  2. java 树状数组模板源码
  3. C#的多线程(2)——机制探索
  4. Sqlplus导出excel文件
  5. mysql galera 安装_MySQL Galera 集群的安装过程
  6. UVA 11426 GCD-Extreme(II) ★ (欧拉函数)
  7. Kubernetes基础组件概述
  8. Nginx 极简入门教程
  9. tp快捷路径 __URL__和__APP__
  10. POJ 1625 Censored!(AC自动机 + DP + 大数 + 拓展ASCII处理)题解
  11. 编译出错:self-encoder.context-me_method = ME_UMH;
  12. (一)UDPSocket 服务端编写(超详细)
  13. autocad锐龙英特尔_4千左右预算,2020年CAD/SU/犀牛/Revit轻薄本推荐/选购指南
  14. linux操作系统拼音,linux怎么读(中文读音发音)
  15. eclipse代码补全、代码提示及防空格自动补全
  16. 计算机导论 教学方法,计算机导论课教学方法探讨
  17. 未来交通 | 中国二十城出行者“MaaS及共享出行体验”初探索
  18. electron-rebuild
  19. 气传导和骨传导耳机哪个好?简单科普这两种蓝牙耳机
  20. 开源神器:让你一键卸载 Windows 默认程序!

热门文章

  1. 风讯dotNETCMS源码分析—数据存取篇
  2. 支持向量机python代码实现
  3. 救援模式下更改用户密码
  4. JVM_垃圾收集器与内存分配策略01
  5. linux无效家目录,Linux 家目录下文件夹消失?
  6. mysql约束sex_MySQL笔记--约束
  7. learning rate四种改变方式
  8. USTC English Club Note20171015(5)
  9. 学长毕业日记 :本科毕业论文写成博士论文的神操作20170322
  10. oracle数据库link格式,Oracle创设DB Link