【本気で考えてみた】サマーウォーズのパスワードの暗号の解き方 2056桁の暗号は解けるのか?

ども、ひきNEETプログラマーでーす。

さてさて、twitter上ではかなり話題になっているようですね。
昨晩金曜ロードショーで放送された「サマーウォーズ」。

TLが「よろしくお願いしまーす!」というセリフであふれていましたがw
kenjiyoro.png

さて、プログラマーとして注目したいのは、やはり何と言っても「暗号」ですね。
今回の騒動の解決にも重要な役割を果たしています。(同時に原因でもありますが…)
サマーウォーズ -SUMMER WARS- [BD 1920x1080 x264 AAC(本編2ch + コメンタリ2ch) Chapter].MP4_snapshot_00.27.19_[2015.07.04_00.19.02].jpg


で、やっぱりあの暗号の意味や解き方が気になる。
ということでいろいろ調べてみることに。

暗号化の種類はRSA

調べてみると、以前に考察した先駆者たちの情報が出てきますね。

サマーウォーズ:曜日の求め方とか2056桁の暗号とかの解説
http://d.hatena.ne.jp/LM-7/20090831/1251727185

うーん、なんかいろいろ難しいことが書いてありますが、
とりあえず「RSA暗号」というものを使っているらしい。。。

では、ここでもう一度あの暗号をじっくり眺めてみましょう。

実際の暗号文を見てみよう

まず、以下が暗号文。
814381625757888867669235779923577997614666120182967212423625362561842935706935245733897830597123563958705058989075149759929002687954354162959592635382962929999373527393893015272028273730979383739039731352452762289782738269898221546122131360619421303021411333103461918121612113166613120121314764123131664436383883993965356373934846376383933154328878976238398563738365433423534644888463839384643839396476573748938457345564245126348446687582487268268599929226493922762658492645161381238929910492254753685216544526687633169497562621466262164751662165496216233621461156486215622262254897462256624662062148316547254564902302454621245456232245162312424565124345181640126512518124243216518454246124324649155489615622654043145149481612161465225465454643245189159164648464546424211515912121512512462155666156124173641635467148361593823787985896185613764728526928789895656425257381651935613893981991374836873823541837167837898784e765434576345637173823138479813768765238613741311236937264827654778277325473898928152422542515522536131313315113131436465191945461216494600604573790464767487277872182954748299792393745245635321521251762851642417215462185215216524128156631535133635135624373234146484945914624245144655937545243151552364728646254632586421653765268752146364216452966051582166316165298691556167867525411656512513466425667026216616514563466741256352312000214153442514256547456176523156416857441156514555136515571345216351461342355314575145551352534665275245434123524164512514854135513552515115617195661675681735681361373613725382416248275264278352381658327184562416554631567452166375415676516659156451553145235234613252553232516852127126451621572321315221367251321433642212341623226546564323221637261423214278263167424542351254254143654215461524423554259418149422453565065652624639606225635206461462565251661258214063232062267640333141325426372633225334823727365243212325634253834253324362370285630743325310023223052360452321456631647857143521514557163023223522423243624702260270285607962516432235723674724715613526215523165518237142314221623715637261634153471

で、これを復号化したのが以下のテキスト(パスワード)です。
the magic words are squeamish ossifrage To know is to know that you know nothing That is the true meaning of knowledge

ちなみにこのパスワードは主に2つに分けられて、まず「the magic words are squeamish ossifrage」というのは実在する暗号の問題の解答で、RSA-129という種類(129というのは暗号化に使うカギの長さで、長いほど強い)の暗号の問題の解答となっています。
詳しくは以下。
https://ja.wikipedia.org/wiki/RSA%E6%9A%97%E5%8F%B7#RSA-129

あと、後半の「To know is to know that you know nothing That is the true meaning of knowledge」というのは、「知るということはあなたが何も知らないことを知ることであり、それが知識の本当の意味である」というような意味です。
何でこんなへんてこなパスワードなんじゃww

いやあ、しかし、こんな数字の羅列からこんなテキストが出てくるなんて、想像もつきませんよなー。
この数字の羅列を見ただけで暗号の種類がわかってしまったケンジ君はホントすごい。

そもそも暗号って?

じゃあ、RSA暗号についてみていきたいと思いますが、
まずは「そもそも暗号とか、暗号解くってどーゆーこっちゃねん」というところを軽くさらっておいたほうがわかりやすいと思うので、説明します。

まず、暗号というのは基本的に数学です。暗号化したいデータに対して複雑な計算を行っていくことで元のデータがわからないような(でも特定の人には復元できるような)暗号文を生成するのです。
で、この暗号化の時に計算式につかう数字のことを「鍵」といい、これを知っていれば暗号文を元に戻せるわけです。

では、簡単な例を示しましょう。
まず、「238」という数字を暗号化したいとします。
そこで、「135」という鍵を用意します。
そして、暗号化するために、以下のような計算を行います。
238 + 135 = 373
はい、ただ単に足しているだけです。
ここでは「238」が元のデータ、「135」が鍵、そして「373」というのが暗号文に当たるわけです。
この暗号文から元のデータを取り出すには、「暗号化の方式」の「元のデータに鍵を足した」ということと、それに対応する「復号化の方式」の「暗号文から鍵を引く」ということ、さらに「鍵」の値の「135」を知らなければなりません。

つまり、暗号というのは暗号文だけパッと示されても「暗号化の方式」とそれに対応する「復号化の方式」、そして「鍵」がなければ解くことができないわけです。
ちなみに、実際の暗号化の方式は、こんな単純な計算ではなく、もっと複雑になります。

数値と文字の関係

さて、さっきから読んでいて疑問に思っている方もいるかもしれませんが、「暗号化の対象は数字じゃなくて文字じゃねぇか」という問題があります。
これには、数値と文字を関連付けるちゃんとしたルールがあるのです。
ASCIIコード表という国際規格がありまして、それが文字と数字の対応付けを決めています。
詳しくは以下。
http://www9.plala.or.jp/sgwr-t/c_sub/ascii.html

例えば、「abc」という3文字のアルファベットを数字に変換しようとすると、以下のようになります。
まず、ASCIIコード表というのを見て、小文字の「a」が数字では何になるのか見ます。
さっきのページをずーっとスクロールしていくと、「a」が「97」にあたるということがわかります。
同じように「b」,「c」も見ていくと、それぞれ「98」,「99」にあたるようです。
よって、さっきの「abc」は「97,98,99」という数値に変換されるわけです。
あとは、これを連結して「979899」みたいにして数字として扱うわけです。(ただ、厳密には連結は16進法の値で行います。10進法だと「d」以降の値が100を超えてしまうためです。まあ、この辺の話は複雑なので割愛します…)

ついにRSA暗号へ

さて、「暗号は計算である」ということが分かっていただけたでしょうか。

それでは、実際に「RSA暗号の仕組み」を見ていきたいと思います。
長くなりますが、頑張ってください!

まず、RSA暗号については以下のサイトが詳しいのですが、さらっとこちらでも説明しておきます。
http://www.maitou.gr.jp/rsa/

RSAは「公開鍵暗号」

まず、RSA暗号というのは「公開鍵暗号」という種類の暗号です。
下記のページが詳しいです。
http://www.maitou.gr.jp/rsa/rsa07.php

従来の暗号は「ある鍵で暗号化したものはその鍵で復元できる」というものでしたが、
「公開鍵暗号」では、「公開鍵」「秘密鍵」の2つの鍵が存在します。
そして、「公開鍵で暗号化したものは公開鍵で復号化できず、秘密鍵でしか復号できない」という性質を持っているのです。

これはすごいことです。
今までの暗号では、誰かにデータを暗号化して送ってもらう前に、「誰もいないところで」相手に鍵を事前に渡しておかなければならなかったからです。そもそも暗号化が必要となる場面では、秘密に鍵を渡すことさえ難しいことも多く、これは大変不都合でした。
しかし、公開鍵暗号なら「公開鍵」を誰の前で相手に渡そうと、問題ないわけです。公開鍵で復号化はできませんから。
で、公開鍵を相手に渡し、暗号化したデータを相手から受け取れば、あとは手元の秘密鍵で復号化するだけなわけです。
相手に渡したり受け取ったりするデータは一切秘密にする必要がありません。

で、こんな便利な公開鍵暗号を実現する暗号化方法が「RSA暗号」なわけです。

ちなみに、「RSA」というのはこの暗号を発明した3人の名前の頭文字です。(テキトーですが、名前なんてそんなものです)

RSAの暗号化の世界~モジュロ~

では、RSAの計算方法を見ていきますが、その前にRSA暗号の計算をするうえで非常に重要な数学的な仕組みを理解しておきましょう。
「モジュロ」というものです。
以下のサイトが詳しいです。
http://www.maitou.gr.jp/rsa/rsa09.php

モジュロというのは、単純に「割り算のあまり」みたいな意味です。
数学では「mod」という記号を使って表します。
例えば、「32を3で割った余り」ならば、

32 mod 3 = 2
という風にあらわされます。

で、モジュロはこれでいいのですが、実はもうひとつ面白い考え方があります。
それは、「ある数を法とする世界」です。

たとえば、「13を法とする世界」ではどのようなことが起こるのか、見てみましょう。

まず、猫が生まれました。0才です。
で、1年ずつ年をとっていき、12才まで成長しました。
そして、その後誕生日を迎えました。
しかし、この世界では「13を法とする」ので、猫は13才になれず、0才に戻りました(数値だけですが)
そこからまた1歳ずつ年を取り、13才になるとまた0歳に戻ります。

そう、「ある数xを法とする世界」では、x以上の数はその数をxで割った余り、つまり「xのモジュロ」に変換されてしまうのです。
RSA暗号ではこの「とある数を法とする世界」で計算を行っていきます。
で、数式ではこの「とある数を法とする世界」のことを (mod 10)みたいにして数式の後ろに書きます。

例えば、「3を法とする世界では32は2に変換される」ということは、以下のように書くわけです。

32 ≡ 2 (mod 3)

ちなみに、等号が三重線になっているのは、厳密には等しいわけではなく、あくまで3を法としたときに等しいからです。

モジュロのもう一つの性質

で、RSA暗号では「ある数を法とする世界」の、もう1つのとても面白い性質を利用します。
以下のサイトが詳しいです。
http://www.maitou.gr.jp/rsa/rsa10.php

まずみなさん、「べき乗」というものはご存知でしょうか?
「累乗」ともいいますが、特定の数を何回も掛け合わせることを言います。

たとえば、「2の5乗」というと、
2×2×2×2×2=32
みたいな具合です。(2を5回掛け合わせる)

それでは、「ある数を法とする世界」でのべき乗を考えます。
まず、RSA暗号では「法」となる数は「2つの素数を掛け合わせたものでなければならない」というルールがあります。
「素数」というのは、「1とその数自身以外では割り切れない数」のことです。
たとえば、2,3,5,13,41などです。
素数でない数は、6,21などがあります。(それぞれ、「2または3」、「3または7」でも割り切れる)

ということで、2つの素数(RSA暗号ではPとQと呼びます)を、それぞれ、
P=3, Q=11 として、法となる数(RSA暗号ではnと呼びます) を
n=33とします。
つまり、今回考えるのは33を法とする世界です。

で、1~32の数のべき乗(1乗から21乗まで)を表にしたのが以下です。(拝借させていただきました)
fig10-1.gif

べき乗数というのが、「○乗」に当たる数です。

ここで、青く塗られた列に注目してください。
なんと、この列の数は元の数とまったく同じです!!
つまり、「33を法とする世界」では、「ある数を11乗、21乗すると元の数に戻る」という性質があるのです!
びっくりでしょう。

ちなみに、この「○乗したら元に戻る!!」という性質の「○乗」のことを、「位数」と言います。
また、この位数は「法とする数を作る際に使った2つの素数PとQ」がわかっていれば簡単に求めることができます。
その計算式は以下です。

n×(P-1とQ-1の最小公倍数) + 1
または、
n×(P-1)×(Q-1) + 1
(ただし、nは任意の正の整数)

上記の式の「n」には、正の整数ならどんな数を入れてもいいです。
「1」だろうが「2863」だろうが「3000000000000」だろうがなんでもOKです。

で、例えばn=1の時は、位数は、上側の式を使うと、
P-1=2, Q-1=10 より最小公倍数は「10」だから、
1×10 + 1 = 11
下側の式を使えば、
1×2×10 + 1 = 21
という感じです。

さて、では、この性質を使って実際にRSA暗号の暗号化、復号化をやってみましょう。

RSAの暗号化・復号化を実際にやってみよう

…ですが、こっから先は多分以下のサイトを読んだほうが早いです。
ということで、暗号化、復号化に関しては外部サイトに任せ、割愛します。
http://www.maitou.gr.jp/rsa/rsa11.php

RSAの暗号化方法のおさらい

さて、ここまでがきちんと理解できたら、今度は正式なRSA暗号の計算方法を見ていきます。
ただ、大体は同じことですので腰を据えてじっくり見ていきましょう。
参考:https://ja.wikipedia.org/wiki/RSA%E6%9A%97%E5%8F%B7#概要

まず、暗号化したいデータ(数値)をmとします。

次に、まず暗号化の準備として、2つの巨大な素数PとQを選びます。
なぜ巨大でなければならないかというと、先ほどの暗号化の過程で見たように、
「法とする数n(P×Q)は公開鍵として公開する」ので、あんまり小さいとPとQがわかってしまうからです。
(ちなみにどれくらい巨大かというと、P=3490529510847650949147849619903898133417764638493387843990820577,Q=32769132993266709549961988190834461413177642967992942539798288533みたいな感じです)

そして、P×Q=nとしてnの値をメモします。
次に、「鍵となる数e」を適当に決めます。フツーは65537を使うそうです。
さらに、「秘密鍵d」の値を計算します。以下のような計算式です。

d={(p-1)×(q-1) + 1}÷e
(さっきの暗号化のページに出てきたものとほぼ同じ式です)

さて、これらの手順がすんだら、PとQは誰にも見つからないように破棄します。
でないと、万が一知られたら秘密鍵dが求められてしまいますからね。

そして、「n」と「e」を公開鍵としてペアにして公開します。
「このnとeをセットで使って暗号化してねー」って感じです。
また、「d」は秘密にしておきます。

では、暗号化の手順を行きますよー。

公開鍵を受け取った人は、送りたい平文mを、nを法とする世界でe乗し、これを暗号文cとします。

c = mのe乗 (mod n)

これだけです。(とはいってもnはとんでもなく大きいし、eも6万超えですので計算には相当時間がかかりますが)
さて、計算がすんだら、この暗号文cを送ります。

では、復号です。

復号のためにnを法として暗号文cをd乗します。すると、平文mが得られます。

m = cのd乗 (mod n)

さて、こんな感じです。
さっきのページと見比べながら、じっくり理解してくださいね。


いよいよあの暗号に挑戦! ケンジくんはいったいどうやって解いたのか?

さて、ではいよいよあの2056桁の暗号文に挑戦です。

814381625757888867669235779923577997614666120182967212423625362561842935706935245733897830597123563958705058989075149759929002687954354162959592635382962929999373527393893015272028273730979383739039731352452762289782738269898221546122131360619421303021411333103461918121612113166613120121314764123131664436383883993965356373934846376383933154328878976238398563738365433423534644888463839384643839396476573748938457345564245126348446687582487268268599929226493922762658492645161381238929910492254753685216544526687633169497562621466262164751662165496216233621461156486215622262254897462256624662062148316547254564902302454621245456232245162312424565124345181640126512518124243216518454246124324649155489615622654043145149481612161465225465454643245189159164648464546424211515912121512512462155666156124173641635467148361593823787985896185613764728526928789895656425257381651935613893981991374836873823541837167837898784e765434576345637173823138479813768765238613741311236937264827654778277325473898928152422542515522536131313315113131436465191945461216494600604573790464767487277872182954748299792393745245635321521251762851642417215462185215216524128156631535133635135624373234146484945914624245144655937545243151552364728646254632586421653765268752146364216452966051582166316165298691556167867525411656512513466425667026216616514563466741256352312000214153442514256547456176523156416857441156514555136515571345216351461342355314575145551352534665275245434123524164512514854135513552515115617195661675681735681361373613725382416248275264278352381658327184562416554631567452166375415676516659156451553145235234613252553232516852127126451621572321315221367251321433642212341623226546564323221637261423214278263167424542351254254143654215461524423554259418149422453565065652624639606225635206461462565251661258214063232062267640333141325426372633225334823727365243212325634253834253324362370285630743325310023223052360452321456631647857143521514557163023223522423243624702260270285607962516432235723674724715613526215523165518237142314221623715637261634153471

実は、途中に1ヵ所「e」という数字以外の文字が入れてあります。
これは、私が暗号文を読み取った際に、どうしても数字と認識することができなかった文字を表すために入れた暫定的な記号です。

具体的には以下。
サマーウォーズ -SUMMER WARS- [BD 1920x1080 x264 AAC(本編2ch + コメンタリ2ch) Chapter].MP4_snapshot_00.27.19_[2015.07.04_00.20.50].png

さて、で、この暗号文ですが、まずは必要な情報を読み取らないといけません。
まず最低限必要なのが「暗号文c」と「公開鍵ペアn,e」です。
eは最悪「65537」と仮定することもできるので、
結局必要なのは「暗号文c」と「公開鍵n」ということになります。

で、都合のいいことにこの暗号文はある文字を境に2つに分けられます。(暫定的に「e」としていますが。)

では、前半部分と後半部分に分けます。

前半部分:
814381625757888867669235779923577997614666120182967212423625362561842935706935245733897830597123563958705058989075149759929002687954354162959592635382962929999373527393893015272028273730979383739039731352452762289782738269898221546122131360619421303021411333103461918121612113166613120121314764123131664436383883993965356373934846376383933154328878976238398563738365433423534644888463839384643839396476573748938457345564245126348446687582487268268599929226493922762658492645161381238929910492254753685216544526687633169497562621466262164751662165496216233621461156486215622262254897462256624662062148316547254564902302454621245456232245162312424565124345181640126512518124243216518454246124324649155489615622654043145149481612161465225465454643245189159164648464546424211515912121512512462155666156124173641635467148361593823787985896185613764728526928789895656425257381651935613893981991374836873823541837167837898784

後半部分:
765434576345637173823138479813768765238613741311236937264827654778277325473898928152422542515522536131313315113131436465191945461216494600604573790464767487277872182954748299792393745245635321521251762851642417215462185215216524128156631535133635135624373234146484945914624245144655937545243151552364728646254632586421653765268752146364216452966051582166316165298691556167867525411656512513466425667026216616514563466741256352312000214153442514256547456176523156416857441156514555136515571345216351461342355314575145551352534665275245434123524164512514854135513552515115617195661675681735681361373613725382416248275264278352381658327184562416554631567452166375415676516659156451553145235234613252553232516852127126451621572321315221367251321433642212341623226546564323221637261423214278263167424542351254254143654215461524423554259418149422453565065652624639606225635206461462565251661258214063232062267640333141325426372633225334823727365243212325634253834253324362370285630743325310023223052360452321456631647857143521514557163023223522423243624702260270285607962516432235723674724715613526215523165518237142314221623715637261634153471

で、この前半と後半のどちらが暗号文でどちらが公開鍵かということですが、実は割と簡単に判断できます。

よく見ると、前半部分と後半部分は明らかに長さが違いますよね。
そして、「暗号文と公開鍵のどちらが大きいか」というと、間違いなく「公開鍵」なわけです。
なぜって、暗号文は「ある数(平文mのe乗)を公開鍵nで割った余り」なのですから、
必然的に余りは割った数よりも小さくなります。

よって、前半部分が「暗号文c」となり、後半部分が「公開鍵n」となると考えられます。
(ちなみに、前半は偶数だから公開鍵ではない、という見方もできます(nは素数を掛け合わせているので絶対に偶数にはならない))

ということで整理しましょう。

c= 814381625757888867669235779923577997614666120182967212423625362561842935706935245733897830597123563958705058989075149759929002687954354162959592635382962929999373527393893015272028273730979383739039731352452762289782738269898221546122131360619421303021411333103461918121612113166613120121314764123131664436383883993965356373934846376383933154328878976238398563738365433423534644888463839384643839396476573748938457345564245126348446687582487268268599929226493922762658492645161381238929910492254753685216544526687633169497562621466262164751662165496216233621461156486215622262254897462256624662062148316547254564902302454621245456232245162312424565124345181640126512518124243216518454246124324649155489615622654043145149481612161465225465454643245189159164648464546424211515912121512512462155666156124173641635467148361593823787985896185613764728526928789895656425257381651935613893981991374836873823541837167837898784

n= 765434576345637173823138479813768765238613741311236937264827654778277325473898928152422542515522536131313315113131436465191945461216494600604573790464767487277872182954748299792393745245635321521251762851642417215462185215216524128156631535133635135624373234146484945914624245144655937545243151552364728646254632586421653765268752146364216452966051582166316165298691556167867525411656512513466425667026216616514563466741256352312000214153442514256547456176523156416857441156514555136515571345216351461342355314575145551352534665275245434123524164512514854135513552515115617195661675681735681361373613725382416248275264278352381658327184562416554631567452166375415676516659156451553145235234613252553232516852127126451621572321315221367251321433642212341623226546564323221637261423214278263167424542351254254143654215461524423554259418149422453565065652624639606225635206461462565251661258214063232062267640333141325426372633225334823727365243212325634253834253324362370285630743325310023223052360452321456631647857143521514557163023223522423243624702260270285607962516432235723674724715613526215523165518237142314221623715637261634153471

さて、これでやっと「解くべき暗号」を把握することができました。

さて、ここから平文mを取り出したいのですが、もちろん秘密鍵dはわかりません。秘密にされていますから。

しかし、ここで少し考えてみてください。
dは、PとQが分かれば簡単に計算することができます。
そして、n=P×Qですから、nをP×Qの形に変換できればなんと復号化できてしまいます。
ちなみに、nをP×Qの形に変換ように、複数の数を掛け合わせてできた数を素数の掛算の形に分解することを、「素因数分解」と言います。

素因数分解のやり方は簡単です。2から順に1ずつ増やしながらnを割っていき、割り切れたときの割った値がP、商がQとなります。

さて、P,Qが求まったら次にdを算出します。

d=(P-1)×(Q-1)+1
に、PとQを代入して計算します。

最後に、nを法として暗号文cをd乗します。すると、平文mが得られます。
m = cのd乗 (mod n)

で、解けるの?

しかし、この「素因数分解」は、時間的には決して簡単なことではありません。
色々な工夫をして解いても、nがあれだけ巨大だと、1日や2日ではPとQは求まりません。

nが1138桁ですので、家庭用PCで因数分解させるとすると概算で約100穣年かかります。
これは途方に暮れるような長い年月です。
もちろん、スパコンを使ってもこれが10分とかに縮まることはありません。
何億年、何兆年というスケールの話です。

ということで、残念ながら私たちがこの暗号に挑戦するのは不可能のようです。(もちろんあなたが不死の体をお持ちならば話は別ですが。)

こんなものを一晩で解いてしまったケンジ君はすごい。てか人間じゃないですよもう。
あと、世界で50人を超える人が一晩で解いちゃったってのも明らかに変です。
普通は解けるわけない。。。

【結論】
ケンジ君は超高速に素因数分解ができたみたいですね。
それで数学オリンピック代表選考に落ちたというのは本当に信じられません。

まあ、これらはすべて、「あの暗号がRSAで暗号化されていたものだったら?」という話ですが。。。

(余談)
ちなみに、これを「RSA!」と決めつけたのには実は結構理由があったりします。
次のページより引用:http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1244895127

①パスワードを求める問題であること。
②健二は電車で「Shorの因数分解アルゴリズム」の
論文(or 記事)を読んでいた。
「Shorの因数分解アルゴリズム」
http://www.s-graphics.co.jp/nanoelectronics/kaitai/quantumcom/3.htm

③健二はモジュロ演算が得意。
<新幹線の中の会話>
健二「1992年の7月19日は日曜日でした」
夏希「ひょっとして、全部憶えているの」
健二「いえ、モジョロ演算っていうのを使って」

④メールで送られてきた数字が、RSA-129に符合する。
81 43 81 62 57 57 88 88 67 66 92 35 77 99(メールの数字)
11 43 81 62 57 57 88 88 67 66 92 35 77 99(RSA-129)

⑤パスワードが有名(?)なRSA-129の解
「The Magic Words are Squeamish Ossifrage」

以上引用です。
まあ、でもやっぱりちゃんと考えて作ったわけではなさそうですよな。。。

ではまたーノシ


この記事へのコメント

  • ネットでぶらぶらとしてたどり着きました。

    最後まで夢中で読んでしまいました。
    そしてサマーウォーズのあの問題の意味がわかりました!
    ありがとうございます。感動です。
    2015年08月15日 11:53
  • 上でコメントさせていただいたものです。
    あなたの記事で暗号に興味がわき、これまでずっとネット等で勉強してました。
    本当にありがとうございました。

    ところで
    the magic words are squeamish ossifrage To know is to know that you know nothing That is the true meaning of knowledge



    ASCIIコードで変換して


    【公開鍵 n(と思われるもの)】
    後半部分
    765434576345637173823138479813768765238613741311236937264827654778277325473898928152422542515522536131313315113131436465191945461216494600604573790464767487277872182954748299792393745245635321521251762851642417215462185215216524128156631535133635135624373234146484945914624245144655937545243151552364728646254632586421653765268752146364216452966051582166316165298691556167867525411656512513466425667026216616514563466741256352312000214153442514256547456176523156416857441156514555136515571345216351461342355314575145551352534665275245434123524164512514854135513552515115617195661675681735681361373613725382416248275264278352381658327184562416554631567452166375415676516659156451553145235234613252553232516852127126451621572321315221367251321433642212341623226546564323221637261423214278263167424542351254254143654215461524423554259418149422453565065652624639606225635206461462565251661258214063232062267640333141325426372633225334823727365243212325634253834253324362370285630743325310023223052360452321456631647857143521514557163023223522423243624702260270285607962516432235723674724715613526215523165518237142314221623715637261634153471


    【公開鍵 e (仮置き)】
    65537


    で暗号化してみて


    見事

    前半部分:
    814381625757888867669235779923577997614666120182967212423625362561842935706935245733897830597123563958705058989075149759929002687954354162959592635382962929999373527393893015272028273730979383739039731352452762289782738269898221546122131360619421303021411333103461918121612113166613120121314764123131664436383883993965356373934846376383933154328878976238398563738365433423534644888463839384643839396476573748938457345564245126348446687582487268268599929226493922762658492645161381238929910492254753685216544526687633169497562621466262164751662165496216233621461156486215622262254897462256624662062148316547254564902302454621245456232245162312424565124345181640126512518124243216518454246124324649155489615622654043145149481612161465225465454643245189159164648464546424211515912121512512462155666156124173641635467148361593823787985896185613764728526928789895656425257381651935613893981991374836873823541837167837898784


    が導き出されたら仮説の正しさを実証できて感動ですね。
    細田監督こんな誰も確認しないところまで作りこんでるなんてすごすぎるな!と。

    ただ、残念ながらどうも前半部分の初めの方は【RSA-129】とは微妙に数字が異なっているところがあるそうなので(はじめの8とかからもう違うようです)、求める答えは導き出せそうもないですね。。。
    2015年08月15日 15:02
  • hnw

    この記事でnとされている数は197を素因数に持ちます。また、n/197は合成数です(ミラーラビン素数判定法により確認)。残念ながら、これはRSA鍵のnではないと考えた方が良さそうです。
    2016年09月12日 22:30
  • 復号はそれだけで「暗号を元に戻す」という動詞としての意味があるので、復号化とは言わないみたいですよ。
    2020年07月05日 22:58