第一步,随机选择两个不相等的质数p和q。
爱丽丝选择了61和53。(实际应用中,这两个质数越大,就越难破解。)
第二步,计算p和q的乘积n。
爱丽丝就把61和53相乘。
n = 61×53 = 3233
n的长度就是密钥长度。3233写成二进制是110010100001,一共有12位,所以这个密钥就是12位。(实际应用中,RSA密钥一般是1024位,重要场合则为2048位。)
第三步,计算n的欧拉函数φ(n)。
根据公式:
φ(n) = (p-1)(q-1)
爱丽丝算出φ(n)等于60×52=3120。
第四步,随机选择一个整数e,条件是1< e < φ(n),且e与φ(n) 互质。
爱丽丝就在1到3120之间,随机选择了e=17。(实际应用中,常常选择65537。)
第五步,计算e对于φ(n)的模反元素d。
所谓"模反元素"就是指有一个整数d,可以使得ed被φ(n)除的余数为1。
ed ≡ 1 (mod φ(n))
这个式子等价于
ed - 1 = kφ(n)
实质上就是对下面这个二元一次方程求解。
ed + φ(n)k = 1
已知 e=17, φ(n)=3120,
17d + 3120k = 1
这个方程可以用"扩展欧几里得算法"求解,此处省略具体过程。
总之,爱丽丝算出一组整数解为 (d,k)=(2753,-15),即 d=2753。
至此所有计算完成。
第六步,将n和e封装成公钥,n和d封装成私钥。
在爱丽丝的例子中,n=3233,e=17,d=2753,所以公钥就是 (3233,17),私钥就是(3233, 2753)。
第七步:发送公钥,保留私钥。此消息在centificate中。
爱丽丝将公钥(3233,17)发给Bob,自己保留私钥就是(3233, 2753)。
证书公钥见下面的抓包
相关推荐
【delphiRSA加解密】支持RSA公钥加密私钥解密,RSA私钥加密公钥解密,秘钥格式支持PKCS8和PKCS1,D7~XE10可用
RSA公钥加密RSA公钥加密
RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被...
gorsa 支持rsa公钥加密私钥解密;支持rsa公钥解密私钥加密
公钥密码学与RSA公钥密码学与RSA公钥密码学与RSA公钥密码学与RSA公钥密码学与RSA公钥密码学与RSA
(去掉注释13.6kb)微信小程序RSA加密模块,用法请参考文件里面的注释。 //加载RSA模块 var RSA = require('rsa.js'); var rsa_res = new RSA.RSAKey(); //配置公钥证书 let public_n = ''; let public_e = ''; ...
亲测可用,可参考:https://blog.csdn.net/qq_37835111/article/details/87358779
linux下从公钥指数(Exponent)和模数(Modulus)得到RSA公钥和pem公钥文件,完整C代码,可直接编译验证。 在网上找了好久都没有合适的,自己做了一个完整的demo。
采用RSA公钥加密体制,利用MFC写的界面程序
生成RSA公钥和私钥的工具:Windows版OpenSSL 亲测可用。提供32位系统和64位系统版本
Java实现,公钥私钥通过计算生产,没有调用API,可以更直观的理解RSA公钥私钥的生成 资源中包含源码、jar包。不管是不想造轮子还是想要学习的同学都适用 也可以根据需要改造代码
RSA公钥加密算法实现 当前版本是1.0,版本很快会进行完善!
C++书写,采用RSA加密算法,可生成公钥和私钥加密解密。
RSA工具,很经典的软件,RSA算法计算工具,方便计算公钥、私钥
该程序使用RSA公钥算法实现了对一个字符串的加密和解密功能。其中,采用欧几里德算法(即辗转相除法)来判断两个数是否是素数。另外,使用菜单选项来选择当前是要“加密”还是“解密”。
RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。 RSA的安全性依赖于大整数的因式分解问题, 只要其钥匙的长度足够长,用RSA...
获取RSA公钥+私钥
利用System.Numerics.BigInteger实现,私钥加密,公钥解密。兼容PKCS1填充方式。有效文件只有MyRSA.cs一个,其它文件是因为带了一个演示窗口。
RSA公钥算法,完整的实现了RSA算法;非常适合算法初学者以及没有密码学基础的开发人员
RSA公钥加密算法的C语言实现,密码学实验