RSA-129を解こう!
と思ったものの、すでに解かれていた (>_<) http://www.mit.edu/people/warlord/RSA129-announce.txt
仕方ないので、理論通りにちゃんと暗号化できるかを試してみた。
公開鍵は次の通り。
N = 114381625757888867669235779976146612010218296721242362562561842935706935245733897830597123563958705058989075147599290026879543541
E = 9007
平文 = "The magic words are squeamish ossifrage"
文字のコーディングはA=01、B=02、...、Z=26、空白=00。
ME mod Nを多倍長整数で計算するのなんか面倒だなあ、と思っていたのだが、Pythonであればpow()を使って一撃であることがわかった。すごいね。
ということで、Pythonで書いてみた。
n = 114381625757888867669235779976146612010218296721242362562561842935706935245733897830597123563958705058989075147599290026879543541 e = 9007 msg = "The magic words are squeamish ossifrage" m = 0 for i in msg : m *= 100 if i>='a' and i<='z' : m += ord(i) - ord('a') + 1 elif i>='A' and i<='Z' : m += ord(i) - ord('A') + 1 print "m =",m c = pow(m,e,n) print "c =",c
これをPython(Ver. 2.6.6)で実行した結果は次の通り。
m = 200805001301070903002315180419000118050019172105011309190800151919090618010705 c = 96869613754622061477140922254355882905759991124574319874695120930816298225145708356931476622883989628013391990551829945157815154
おお! あってるじゃん! このCだよ!
RSAすごいなあ。Pythonもすごいなあ。
関連記事
RSAで遊ぼう
RSA-129を解こう!
サマーウォーズのあの暗号を解こう!
サマーウォーズのあの暗号を解こう!(その2)
サマーウォーズのあの暗号を解こう!(その3)
サマーウォーズのあの暗号を解こう!(その4)
サマーウォーズのあの暗号を解こう!(その5)
RSA暗号と中国の剰余定理と冪剰余計算の高速化