一.RSA算法

一种常用的非对称加密算法. 非对称加密算法家族包含了鼻祖DH算法,基于因子分解难题的RSA算法,基于离散对数难题的ElGamal算法和ECC算法等.在本人对接过的多家银行和第三方支付接口中,RSA算法是非对称加密中的网红花旦,今天就浅谈下RSA算法.

二.RSA应用

在JAVA中运用RSA算法,在网上都有成熟的案例,不再重复.公私钥的生成可以通过现成的工具软件或者写java代码来生成RSA公私钥对,java密钥类及keytools都可以.常用的RSA密钥长度有1028位和2048位,JAVA7本身实现了1028位.如果使用2048位可通过BouncyCastle实现.

三.RSA原理

1个数学题

RSA算法是基于一个数学题:大数因子分解难题,一个大数很难分解成2个素数的乘积.
素数:只能被1和本身整除的数,也叫质数. 自然界中的素数有2,3,5,7,11等,注意1不是素数.
举例:一个数是15,可以分解成素数3乘以素数5, 但一个很大很大的数,很难分解成2个素数.但是反过来,即使2个很大的素数,计算2个数的乘积是容易的.
思考: 为什么不可以?穷举不可以吗?
答案: 素数是无穷的,几百年来,人类总共发现了 51 个梅森素数,最大素数是2^82,589,933-1,对于一个很大的数N,比如1024位的二进制数,穷举需要从2开始穷举到N/2寻找素数,以目前计算机能力还做不到.

1个例子

背景

基于大数的因子分解计算较复杂,我就用一个小的"大数"来解释,原理都一样.
这个"大数"是15.
任务背景: 风清扬要通过书信传授独孤九剑给令狐冲,又不能泄露武功秘籍.

计算公私钥

  1. 令狐冲先选出2个素数,分别是3和5,将2个数字相乘.
    公式: n= p*q. 其中n=15,p=3,q=5;

  2. 准备φ(n).
    公式: 欧拉总计函数,φ(n)=(p-1)(q-1). 其中φ(n)是指小于n中与n互素的个数.互素的概念指2个数字没有公共因子(比如7和8).
    计算: φ(15)=φ(3
    5)=φ(3)φ(5)=(3-1)(5-1)=8.
    验证: 按定义小于15且与15互素的数字有1,2,4,7,8,11,13,14.确实是8个.

  3. 公钥
    公钥e 满足 1< e < φ(n) 且 e和φ(n)互素
    计算: 满足小于8且和8互素(没有公共因子)数字有7,5,3等. 选个3吧.
    公钥e = 3.

  4. 私钥
    私钥d满足模逆元 e*d/φ(n)余1.
    计算: e=3,φ(15)=8, 满足3d%8==1, 很多数字可以满足,比如数字11.
    私钥d = 11.

发送公钥

  1. 令狐冲把大数n, 公钥e写信给风清扬.
    这个例子中 n=15, e=3

风清扬写信

  1. 风清扬先把独孤九剑的前8式传给令狐冲,数字m=8.(注意m小于n)
    公式: 数字c = m的e次方除以n求余.
    计算: 8的3次方除以15求余等于2,也就是c = 2
    风清扬写信给令狐冲,只写了数字c=2. 没有写m=8(防止秘籍泄露).

令狐冲收信

  1. 令狐冲收信,拿到了c=2.开始计算.利用手中的私钥d=11,大数n=15.
    公式: c的d次方除以n求余 = m.
    计算 2的11次方除以15求余=8. 这个数字正是风清扬想要传递的数字m=8.
    注意: m只是一个数字代号.实际n是个大数,满足m<n就可以.如果秘籍内容太长,就分开来发送,不影响安全性,信息的底层都是二进制数.

东方不败偷信

  1. 东方不败窃取了第5步和第6步的书信,有风清扬书信中的c=2, 有大数n=15.公钥e=3,没有私钥d,怎么破解?

  2. 东方不败需要知道私钥d,就要获取φ(n),也就是φ(15),而φ(15)是有(p-1)*(q-1)计算出来的,也就是需要把大数15分解成2个质数p和q. 基于前面的数学题,现有计算机能力还解不出大数因子分解.

思考

  1. 如果东方不败获取了量子计算机,怎么办:
    答案: 密码学是个矛和盾.如果矛厉害了,盾也会做相应的升级.如果非对称加密算法被破解,那现有金融系统都需要升级,区块链基于非对称加密的账户体系也要重构,这是后话了…

以上,如有出入,烦请指正.感谢感谢!!
PS:第一次写技术BLOG.如转载请说明出处.码字不易,感谢支持.

独孤密码-非对称加密算法RSA解析相关推荐

  1. 非对称加密算法RSA公钥私钥的模数和指数提取方法

    生成非对称加密算法RSA公钥.私钥的方法: 1. 通过OpenSSL库生成,可参考  https://github.com/fengbingchun/OpenSSL_Test/blob/master/ ...

  2. python实现非对称加密算法_Python3非对称加密算法RSA实例详解

    本文实例讲述了Python3非对称加密算法RSA.分享给大家供大家参考,具体如下: python3 可以使用 Crypto.PublicKey.RSA 和 rsa 生成公钥.私钥. 其中 python ...

  3. 网络安全_密码学实验_非对称加密算法RSA

    网络安全_密码学实验_非对称加密算法RSA 一.实验环境 二.非对称加密RSA 1.理解RSA算法原理 2.加密过程 解密过程 一.实验环境 PyCharm 2019.2.4 (Professiona ...

  4. Java加密技术(四)——非对称加密算法RSA

    转自:http://snowolf.iteye.com/blog/381767 接下来我们介绍典型的非对称加密算法--RSA RSA     这种算法1978年就出现了,它是第一个既能用于数据加密也能 ...

  5. java js 非对称加密算法_Java加密技术(四)——非对称加密算法RSA

    Java非对称加密算法rsa 接下来我们介绍典型的非对称加密算法--RSA RSA 这种算法1978年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法.它易于理解和操作,也很流行.算法的名字 ...

  6. Java进阶(七)Java加密技术之非对称加密算法RSA

    Java加密技术(四)--非对称加密算法RSA 非对称加密算法--RSA 基本概念 非对称加密算法是一种密钥的保密方法. 非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(priv ...

  7. 非对称加密算法-RSA

    2019独角兽企业重金招聘Python工程师标准>>> 1.概述 RSA有两个密钥,一个是公开的,称为公开密钥:一个是私密的,称为私密密钥. 特点: 公开密钥是对大众公开的,私密密钥 ...

  8. 在非对称加密算法RSA中,假设“大”素数p=5,q=11,试给出计算过程。

    文章目录 1. 题目在非对称加密算法RSA中,假设"大"素数p=5,q=11,试给出计算过程. 2. 分析步骤 3. 抄作业简单粗暴看这里 4. 参考 1. 题目在非对称加密算法R ...

  9. 数据传输加密——非对称加密算法RSA+对称算法AES(适用于java,android和Web)

    本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 转载请注明出处:http://blog.csdn.net/chay_chan/article/details/58605605 数据 ...

  10. Java实现非对称加密算法-RSA加解密

    RSA是由三位数学家Rivest.Shamir 和 Adleman 发明的非对称加密算法,这种算法非常可靠,秘钥越长,就越难破解. 目前被破解的最长RSA秘钥是768个二进制位,长度超过768位的秘钥 ...

最新文章

  1. linux shell 字符串操作(长度,查找,替换)详解
  2. 2017杭州_考驾照笔记
  3. 史上最全设计模式导学目录(完整版)
  4. 数据中心冷却技术在企业持续发展中的应用
  5. FB/IB多代事务结构详解--对FB事务最好的讲解
  6. C语言中文件的基本操作函数fprintf和fscanf实例介绍
  7. Python数据库添加时间
  8. 阿里云智能视频 AI 重装来袭
  9. c51为啥要宏定义时钟_51单片机时钟实训报告
  10. 区块链——据说现在这玩意很火?
  11. 为什么Linux内核常用unsigned long来代替指针
  12. [Android] 查看MTD,EMMC,MMC三种设备的分区
  13. 星期天写了点蛋疼的东西(3)
  14. JAVA最强工具类之一HuTool
  15. Amoeba配置读写分离
  16. Java计算点的质心_java-矩阵的质心
  17. 药明康德2020年营业收入165.35亿元,同比增长28.5%
  18. 局域网中使用来宾账户访问计算机
  19. 解决图片旋转之后的位置问题
  20. ArcGIS:如何进行栅格数据的拼接和裁剪、坡度坡向的提取、地形透视图的建立、等高线的提取、剖面图的创建?

热门文章

  1. ggggxc学习笔记---C语言代码I
  2. arduino 联动ULN2003驱动板营造夏日炫酷小风扇
  3. git memery 后 push到远程,如何回滚
  4. 智能硬件可能成为网络安全事件新的“爆发点”
  5. 2020年中国半导体划片机行业现状分析,国产替代+需求扩张,行业前景广阔「图」
  6. SQL server日志清理
  7. 建筑节能技术在云计算数据中心建设中的应用
  8. 字节架构师:来说说 Kafka 的消费者客户端详解,你都搞懂了吗?
  9. Gym - 100886F 2015-2016 Petrozavodsk Winter Training Camp, Saratov SU Contest F - Empty Vessels
  10. 趋势追踪交易课堂:复盘的意义和方法