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 位密钥可以加密最多2048 / 8 = 256字节的消息。

有关此限制的更深入描述,您可能希望在此处阅读我对类似问题的回答:RSA 中的消息长度限制

于 2013-10-24T07:45:36.290 回答