RSA のような暗号化方式では、メッセージを表す整数を操作します。文字列をバイトの配列に変換し、一度に 1 文字ずつ処理することをいじりましたが、これは非常に遅いようで、RSA アルゴリズムはメッセージ全体を処理するように設計されています。
文字列を、暗号化アルゴリズムを適用できる表現 (整数、大整数など) に変換するにはどうすればよいでしょうか?
RSA のような暗号化方式では、メッセージを表す整数を操作します。文字列をバイトの配列に変換し、一度に 1 文字ずつ処理することをいじりましたが、これは非常に遅いようで、RSA アルゴリズムはメッセージ全体を処理するように設計されています。
文字列を、暗号化アルゴリズムを適用できる表現 (整数、大整数など) に変換するにはどうすればよいでしょうか?
通常の使用法では、RSA を使用してメッセージ全体を実際に暗号化することはありません。代わりに、RSA を使用して対称ブロック暗号 (AES など) の暗号化キーを暗号化し、そのブロック暗号を使用してデータ ストリームを暗号化します。
これを自分でやろうとしないでください。 セキュリティで保護されたパディング スキームを設定し、ブロック暗号を正しく安全なモードで使用するなど、変換の方法には細心の注意を払う必要があります。言語が提供する暗号化ライブラリーまたは OpenSSL のような標準ライブラリーを使用して調べることができます。
お役に立てれば!
整数と文字列がメモリ内でどのように表現されるかを考えてみてください。32 ビット整数は 4 つの 8 ビット バイトを使用し、64 ビット整数は 8 バイトを使用します。文字列もバイトとして格納され、ASCIIの場合、各文字は1バイトで表されます。(UTF-8 と UTF-16 は可変長エンコーディングですが、それでもバイトです。)
すべてのデータ型は内部的にバイトで表されるため、変換するものはありません。
これを、たとえば RSA で使用する 2048 ビット整数に拡張できない理由はありません。