RSA-129を解こう!

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もすごいなあ。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください