接下來要踏入RSA-非對稱密碼
而RSA通常都會牽扯到我們之前學的模運算,所以我們會先來簡單複習一下,之後解2題
表示為a mod n
a代表被取模的數,n是模數,運算結果為a除以n的餘數
e.g. 18 mod 4 = 2 因為18除以4的餘數為2
python表示
a = 某數,e = 平方幾次,n = 模數
pow(a, e, n)
e.g. 3的2次方mod4 = 1
pow(3, 2, 4)
今天了解這樣應該就ok了!
來解題吧
網址 : https://cryptohack.org/courses/public-key/rsa_starter_1/
題目在教學模運算的python用法,也就是剛剛複習到的
組成為pow(base, exponent, modulus)
base = 基數, exponent = 指數, modulus = 模數
就英文翻譯拉,我英文不好,所以紀錄一下( •̀ ω •́ )y
題目要求101^17 mod 22663
所以直接這樣寫
print(pow(101, 17, 22663))
flag : 19906
網址 : https://cryptohack.org/courses/public-key/rsa_starter_2/
透過這題知道
RSA加密是指使用指數(e)和模數(N)對訊息進行模運算
而模數通常是兩個指數的乘積
-> N = q * p
且e常見的值為
-> e = 0x10001 or 65537
而(N,e)組在一起,形成RSA公鑰
題目要求,利用題目給的e、p、q,為數字加密
p跟q為質數(prime)
-> number = 12, e = 65537, p = 17, q = 23
所以先求出N後,利用pow()來加密
p, q = 17, 23
e = 65537
number = 12
N = p*q
print(pow(number, e, N))
flag : 301
模運算python呈現
RSA加密是指使用指數(e)和模數(N)對訊息進行模運算
今天為簡單的非對稱小入門,恩..大概就醬XD