RSAでは、メッセージの長さは(keysize / 8)バイトを超えてはなりません。なぜそのような制限があるのですか?RSAアルゴリズムに入力する前に、入力(「abcde」など)は何に変換されますか。また、入力文字列「abcde」のサイズはどこで考慮されますか?
1 に答える
RSAアルゴリズムは基本的に次のとおりです。
暗号文=(平文e)mod n
復号化するには:
平文=(暗号文d)mod n
e
そしてn
一緒にあなたの公開鍵を作り、そしてd
あなたn
の秘密鍵を作ります。e
通常、はいくつかの一般的な値の1つであり、たとえば65537n
は、2つの大きな素数の積であり、一意p
でq
ある必要があり、キーの長さ(たとえば、1024ビット)を定義します。暗号文の復号化に使用されるの値は、、およびd
を使用して計算されます。興味がある場合は、ウィキペディアに詳細があります:http: //en.wikipedia.org/wiki/RSA_(algorithm)。平文は、RSAアルゴリズムで使用される場合、基本的に大きな整数として扱われます。e
p
q
モジュロ演算子に慣れていない場合は、基本的に左側を右側で割った余りです。たとえば17 mod 5 = 2
、5は17を3回正確に除算し(3 * 5 = 15
)、余りは:)になります17 - 15 = 2
。
モジュロ演算子の定義の結果として、の結果a mod b
は常に。より小さくなりb
ます。これを考えると、復号化された値がmod n
操作を実行した結果であるという事実は、復号化されたときに、結果のプレーンテキスト値が常にn未満になることを意味します。したがって、これが最初に暗号化した実際の平文であるためには、入力が。未満である必要がありますn
。
これを保証するために、メッセージはより少ないビット(「桁」)を持つように制限されていますn
。のビット数はキーサイズであるため、、、または(1バイトに8ビットがあるため)n
未満である必要があります。keysize bits
keysize / 8 bytes