0

javascript (crypto-js および jsbn ライブラリを使用) を使用して、RSA で長いメッセージを暗号化/復号化しようとしています。

これまでのところ、短いメッセージを暗号化/復号化するために、次のコードがあります。

function encrypt(signedCert, msg) {
    key = new RSAKey();
    m = asciiToHex(msg);
    m = new BigInteger(m, 16)
    //n and e retrieved from the digital certificate
    key.setPublic(signedCert.msg.subject.pk.n, signedCert.msg.subject.pk.e);
    var ctxt = key.doPublic(m).toString(16);
    return ctxt;
}

function decrypt(sk, ctxt) {
    key = new RSAKey();
    c = new BigInteger(ctxt, 16);
    key.setPrivate(sk.n, sk.e, sk.d);
    var ptxt = key.doPrivate(c).toString(16);
    var ptxt = hexToAscii(ptxt);
    return ptxt;
}

メッセージが短い場合、これは魅力のように機能します。しかし、私の人生では、メッセージが長いときに暗号化/復号化する方法がわかりません!

誰でも助けることができますか?ありがとう :)

4

1 に答える 1

1

「短い」と「長い」を定量化しませんが、「長い」メッセージは、使用しているキーの最大メッセージサイズを超えていると思います。

RSA アルゴリズムの構造上、RSA キー サイズよりも大きいメッセージを暗号化することはできません。キー サイズは通常ビット単位で測定されるため、キー サイズを 8 で割り、特定のキーで暗号化できる最大メッセージを取得します。2048 / 8 = 256たとえば、2048 ビットのキーは最大バイト数のメッセージを暗号化できます。

この制限の詳細な説明については、同様の質問に対する私の回答をお読みになることをお勧めします: RSA でのメッセージの長さの制限

于 2013-10-24T07:45:36.290 に答える