对于加密,解密,签名和验证符号,我使用此处DotnetCore.RSA
的代码在我开始处理大文本之前,它一直很好。
通过RSA加密不适用于大文本。大,带有2048个RSA密钥,超过245个字节
尝试加密大文本时出现异常:
异常消息:Interop.Crypto.OpenSslCryptographicException: 'error:0406D06E:rsa routines:RSA_padding_add_PKCS1_type_2:data too large for key size'
加密功能:
public string Encrypt(string text) {
if (_publicKeyRsaProvider == null) {
throw new Exception("_publicKeyRsaProvider is null");
}
return Convert.ToBase64String(_publicKeyRsaProvider.Encrypt(Encoding.UTF8.GetBytes(text), RSAEncryptionPadding.Pkcs1));
}
写DotnetCore.RSA的开发人员建议将长文本分成许多小文本,分别加密并连接起来
任何建议,这正常吗?也许建议使用.net Core的一些用于RSA加密的库
答案 0 :(得分:2)
写DotnetCore.RSA的开发人员建议将长文本分成许多小文本,分别加密并连接起来
这不是最好的方法(礼貌地说)。使用RSA的常用方法(即使是较短的输入)也使用hybrid encryption。
这种方法背后的原因是
基本上,您将创建一个随机加密密钥,使用任何安全的对称密码(例如AES,3DES,Salsa等)对任意长度的数据进行加密,然后使用RSA加密对称加密密钥。