我在网上找到了一个使用 RSACryptoServiceProvider.Encrypt 加密和解密字符串的示例。直到现在我才意识到,这是一个坏主意吗?我是否应该使用 RijndaelManaged 之类的东西并使用 RSACryptoServiceProvider.Encrypt 加密密钥和 IV(48 字节),然后使用 AES 加密其余数据?
额外的问题:如果我尝试加密 1k+ 或给我糟糕的性能,RSACryptoServiceProvider 会炸毁我的脸吗?
我在网上找到了一个使用 RSACryptoServiceProvider.Encrypt 加密和解密字符串的示例。直到现在我才意识到,这是一个坏主意吗?我是否应该使用 RijndaelManaged 之类的东西并使用 RSACryptoServiceProvider.Encrypt 加密密钥和 IV(48 字节),然后使用 AES 加密其余数据?
额外的问题:如果我尝试加密 1k+ 或给我糟糕的性能,RSACryptoServiceProvider 会炸毁我的脸吗?
是的,将 RSA 与 Rijndael 结合使用是最佳解决方案。在相应的MSDN页面上有一个示例。
额外的答案:如果您尝试传递的数据多于提供程序实例允许的数据(对于默认的 1024 位(128 字节)密钥和默认的 PKCS#1.5 11 字节填充,它是 117 字节),将引发 CryptographicException。如果您尝试使用某种循环方法以块的形式传递数据,那么它会给您带来糟糕的性能。