RSA暗号は1文字1文字暗号化しているのでしょうか(なわけないと思うのですが)
ネット上でよく見かけるRSA暗号の説明で,平文をコード化するとき,例えば HELLO
であれば,
['H', 'E', 'L', 'L', 'O']
をそれぞれ文字コード
[48, 45, 4c, 4c, 4f]
に変換し,1文字1文字を $e$ 乗して
[4242, 42423435, 645646, 645646, 636346]
といった暗号化をする(数字はテキトーです),という書き方をしている記事が異様に多いのですが(例えば公立はこだて未来大学など),これは正しいのでしょうか.1文字1文字暗号化していたら文字数がばれるし,同じ文字があった場合何番目にその文字があるか分かってしまうし,暗号文の並びで母音の e
などがどれかすぐに予想できそうな気もするのですが.
実際は,HELLO
であれば 16進法で10桁の数
48454c4c4f
を $e$ 乗するのが本来であり,また,長すぎる文字列は適度に分割して暗号化していると思われるのですがいかがでしょうか.暗号理論の専門書に目を通しても一般論しか書かれておらず実装的な部分が詳しく書かれていないことが多いので,もやもやしています.
また,暗号化するのに指数 $e= 65537$ が使われることが多いのは,
- そこそこ大きな数だから
- 繰り返し 2乗法で高速で計算できるから
- 素数ゆえに $\operatorname{lcm}(p-1, q-1)$ と互いに素になりやすいから
などが理由でしょうか.
ご教示お願いします.