我从不使用加密库,但我想用私钥加密字符串并用公钥解密。如何在 C# 中实现这一点。请用小代码片段帮助我。 谢谢
最佳答案
据我所知,虽然从技术上讲公钥和私钥在数学上没有区别,但出于安全原因,您需要始终如一地使用它们。
您要求使用私钥加密并使用公钥解密。这通常是错误的方法。如果要朝这个方向发展,通常是一种叫做“数字签名”的操作。
如果您使用私钥签名,使其可以被公钥 逆转,那么它就不是真正的 secret 。我假设您只是想验证邮件是来自发件人的合法邮件。您需要的是数字签名 - 仍然使用公钥私钥(或“非对称”) key 执行。
有了数字签名,消息本身就不是 secret 的(没有必要,因为任何拥有公钥的人都可以解密它)但是伴随着基于消息的附加数据,可以使用公钥验证并且可以仅由具有匹配私钥的人计算。
它看起来像下面这样。现在您只需要弄清楚从哪里获得 key 即可。
static byte[] GenerateDigitalSignature(byte[] data, RSAParameters asymmetricKey)
{
using (var rcsp = new RSACryptoServiceProvider())
using (var cp = new SHA1CryptoServiceProvider())
{
rcsp.ImportParameters(asymmetricKey);
return rcsp.SignData(data, cp);
}
}
关于c# - 如何用私钥加密字符串并用公钥解密?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4828803/