公開鍵暗号方式の一つ。典型的には以下のようなコードが登場する
from Crypto.Util.number import getPrime, isPrime, inverse import os def keygen(): p = getPrime(512) q = getPrime(512) n = p*q e = 65537 d = inverse(e, (p-1)*(q-1)) return (n, e), (n, d) def enc(m, pubkey): n, e = pubkey c = pow(m, e, n) return c def dec(c, privkey): n, d = privkey m = pow(c, d, n) return m m = int.from_bytes(b"hello", "big") pubkey, privkey = keygen() c = enc(m, pubkey) m2 = dec(c, privkey) assert m == m2
How to recover cryptographic keys from partial information
https://www.isg.rhul.ac.uk/~sdg/full-tunable-rsa.pdf
n = p2のとき
任意の平文に対する暗号化ができるとき、nを求める
なので になる。ここで平文とを渡すと, となるから
RSAのパラメータ同士の関係
RSA-CRTの場合も参照
where