Javascript解密长消息RSA

时间:2013-10-24 05:49:15

标签: javascript cryptography rsa

我正在尝试使用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;
}
当消息很短时,这就像一个魅力。但是,对于我的生活,当消息很长时,我无法弄清楚如何加密/解密!

任何人都可以帮忙吗?谢谢:))

1 个答案:

答案 0 :(得分:2)

您没有量化“短”和“长”,但我猜您的“长”消息超出了您正在使用的密钥的最大消息大小。

由于构建了RSA算法,因此无法加密大于RSA密钥大小的消息。密钥大小通常以位为单位进行测量,因此将密钥大小除以8以获得可使用特定密钥加密的最大消息。例如。 2048位密钥可以加密最多2048 / 8 = 256字节的消息。

有关此限制的更深入说明,您可以在此处阅读我对类似问题的回答:Message length restriction in RSA