iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 16
0
Security

駭客入門系列 第 16

Day16 Cryptography - RSA

好的,接下來我們要學 RSA ,那 RSA 生成的金鑰步驟分別是,

  1. 找兩個質數 : p 、 q , 且 n = p * q ,要符合 E( n ) = ( p - 1 ) * ( q - 1 )
  2. 找個與 E( n ) 互質的數 : c
  3. 透過 E( n ) 和 c 來算出 d ,使得 c * d mod E( n ) = 1 , c 和 d 在 mod E( n ) 下互為模反元素

然後 密文 = 明文c mod n
明文 = 密文d mod n

舉例來說:

明文是 4
然後第一步,找的質數分別是 p = 3 、 q = 11 , n = 33 ,
E ( n ) = ( 3 - 1 ) * ( 11 - 1 ) = 2 * 10 = 20
接著第二步,找出與 E( n ) 互質的數 c = 7
最後第三步,算出 d = 13 ,使得 c * d mod E( n ) = 1 , 7 * 13 mod 20 = 1

連續來看整個加密過程,就是

密文 = 4 7 mod 33 = 16
明文 = 16 13 mod 33 = 4

我在舉例子的時候沒有想好,密文出現 16 位的天文數字,還好最後的答案是對的,
這樣應該大家都知道什麼是 RSA 加密法了


上一篇
Day15 Cryptography - mod & mod inverse
下一篇
Day17 來自社群學姊的幫助 - 番外篇
系列文
駭客入門30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
bb1909
iT邦新手 5 級 ‧ 2022-04-29 09:40:44

7 * 13 mod 20 = 1.....should be 7 ^ 23 mod 20 = 1

我要留言

立即登入留言