RSA
鍵生成
素数二つ生成
オイラー関数
使って
$ \phi(n)
を出す
$ \phi(n)
と互いに素な公開鍵
$ e
を生成
拡張ユークリッド互除法
で秘密鍵
$ d
を生成
暗号化と復号は
べき剰余
なので省く
TypeScriptでの実装
実装が
これ
巨大な整数を
BigInt
型で扱う
JSのMathオブジェクト含めて通常の整数型とは相性が良くない
Miller-Rabin
素数判定なども含めて全て自作した