2012-04-08 9 views
-2

RSAでは、メッセージの長さは(keysize/8)バイトを超えてはなりません。なぜそのような制限がありますか? RSAアルゴリズムに入力する前に変換された入力(「abcde」など)は何ですか?また、入力文字列「abcde」のサイズを考慮する場所は何ですか?RSAのメッセージ長制限

答えて

3

RSAアルゴリズム基本的にされています。一緒にあなたの公開鍵、およびdを構成し、nあなたの秘密鍵を作る

Plaintext = (Ciphertext d) mod n

en

Ciphertext = (Plaintext e) mod n

および復号化するために。 eは、通常、いくつかの一般的な値の1つです。 65537,nは、大きな固有の2つの素数pqの積であり、鍵の長さ(たとえば1024ビット)を定義します。暗号文を解読するために使用されるdの値は、e,pおよびqを使用して計算されます。あなたが興味を持っているなら、ウィキペディアにはさらに詳しい情報があります:http://en.wikipedia.org/wiki/RSA_(algorithm)。あなたの平文は、基本的にはRSAアルゴリズムで使用されるときに大きな整数として扱われます。

モジュロ演算子に慣れていない場合は、左側が右側で分割されている場合は基本的に残りの部分です。例えば。 17 mod 5 = 2は、正確に17を3回(3 * 5 = 15)分け、残りは、17 - 15 = 2のままです。

モジュロ演算子の定義の結果、a mod bの結果は常にbより小さい。これを考えると、解読された値がmod n演算を実行した結果であるという事実は、解読されたときに得られる平文の値が常にnよりも小さいことを意味する。したがって、これが最初に暗号化した実際の平文であるためには、入力はnより小さくなければなりません。

これを保証するために、メッセージはnよりも少ないビット数( "数字")に制限されています。 nのビット数はキーサイズであるため、keysize bitsまたはkeysize/8 bytes(バイトに8ビットがあるため)未満でなければなりません。

+0

私はあなたが私の質問を得ていないと思います。私の質問は、パブリックキーで暗号化したい入力文字列 "abcde"がある場合、どのようにハットが行われるかということです。 "ancde"は何に変換されますか? – Ashwin

+2

数字に変換されます。どのようにするかは、「ancde」が表すものによって異なります。入力文字列が数字に変換される方法(または入力が文字列であること)は、RSAアルゴリズムの一部ではなく、その方法の一部です(たとえば、大文字でも合っていますか?具体的に実施される。たとえば、 'a'を "01"、 "b"を "02"などで表現し、10進数で表現することができます。バイナリで8ビットのASCIIを使うことができます。 –

+0

@David Schwartz:あなたが言っていることは、「abcde」が次のようなものに変換されるということです。「0102030405」とこれが公開鍵が暗号文になるでしょうか? – Ashwin

関連する問題