"我想不到要讲什麽。"
---
演算法的准备步骤有五个,更准确来说是四个。
当 Alice 要传讯息给 Bob 时,
依据我们前天所讲的结论是会使用到 Bob 的公钥加密,所以首先要先设定公钥。
设定的步骤如下:
1.选择两个大质数,分别是 p和 q。
2. n = p×q
3. (p-1)(q-1)
4. 选择一个 e ∈{1, 2 , ... , },使得e 跟 互质。
5.d×e ≡1(mod )
举个例子来说,
算完以上的数字之後,
从上面的例子来说,就是私钥是53,公钥是(77, 17)
将公钥公开,私钥藏好。
要注意只能公开 n 跟 e。
私钥是绝对不能被别人知道的数字,也就是公开的数字必须不能推导出私钥(d)。
来看一下要推导出公钥 d 需要哪些东西。
看到第五步,d 是 e 的乘法反元素,所以要知道 d 是多少就得知道 e 和模数是多少,
e 跟 n 已经被我们公开了,那就要看光有n 的话能不能把 算出来。
要想算出,看第三步就知道,我们需要 p 跟 q。
而昨天解释过了,光是知道 n 是很难推得 p 跟 q 的,
所以公钥的公开并不会威胁到私钥的隐蔽性。
RSA 的加解密是做指数运算,所有的运算都要 mod n
我们知道 ,也可以很轻易的推论出
但是跟你说要你推回 x 等於多少的话是困难的。
当然如果你推出来的话,那是因为数字很小很方便计算。
我们要加密的东西绝对不是2这麽简单的数字。
另外要看到,
看到最後一个等号必须使用尤拉定理*来证明,
不过可以简单看成是「d 是 e 的乘法反元素」的结论。
*Euler's Theorem : if a ⊥ n, then .
RSA有数位签章功能,其算法就是将加密演算法倒过来,
用私钥加密,用公钥解密。
其中 s 是签章後的结果,x'则是解密後的解果,
验章的方式是确认x和x'是否相同,
如果相同就认定是本人所签署。
因此签章者必须传送一份签章前的文件供收件者验章。
以上就是 RSA 的介绍,
而实务上 RSA 若要足够安全,建议使用 2048 或 3072 位元的 n。
图片来源:
http://www.quickmeme.com/meme/3u5s2c
>>: 【Day15】[资料结构]-二元搜寻树Binary Search Tree, BST
树的定义 一种存资料的型态,由最初的节点延伸下多个分支,每个分支都个有个自的子分支,分支下可分割成彼...
使用Matplotlib绘制图表 安装matplotlib套件的命令列指令 pip install ...
当我们在Chrome的console视窗键入如下程序码,执行一个say()的函式,除了consol...
今天会来说明 TypeScript 中内建 ReturnType 和 Parameters 的原始...
去年参加 Software Development 类别的铁人赛,主题为PHP 大师之路 - 开源的...