我正在尝试解密使用Node JS中pkcs8格式的公共密钥和私有密钥加密的MP4文件。
我尝试过此代码:
var decrypted = crypto.privateDecrypt({ key: privateKey, padding: crypto.constants.RSA_PKCS1_PADDING }, buffer);
我遇到以下错误:
错误:错误:0406506C:rsa例程:rsa_ossl_private_decrypt:数据大于mod len
RSA使用陷波门函数时难以分解大型半素数。
作为RSA密码系统的一部分,在创建公钥/私钥时会生成两个素数。
我们称两个素数为p
和q
。形成n
的倍数,即模数。
尽管RSA可用于直接加密数据(通过c=m^e mod{n}
,但是不能直接加密大于模数的数据。
因此,如果您使用2048-bit
素数生成n
,则只能直接使用密钥加密4096-bit
个信息。
相反,对于大数据,您需要使用RSA密钥执行Diffie-Hellman密钥协商,然后使用具有对称密码的商定密钥,例如AES-GCM
或xSalsa20
。