如何使用私钥加密字符串并使用公钥解密?

时间:2011-01-28 13:35:37

标签: c# encryption

我从不使用加密库,但我想用私钥加密字符串并通过公钥解密。如何在c#中实现这一点。请帮我一个小代码片段。 感谢

1 个答案:

答案 0 :(得分:12)

AFAIK,虽然公钥和私钥之间的数学技术没有区别,但出于安全考虑,您需要始终如一地使用它们。

您要求使用私钥加密并使用公钥解密。这通常是错误的方式。如果你想走这个方向,它通常是一个叫做“数字签名”的操作。

如果您使用私钥进行签名,以便公钥可以撤销,那么这并不是一个秘密。我假设您只是尝试将邮件验证为来自发件人的合法邮件。您需要的是数字签名 - 仍然使用公钥 - 私钥(或“非对称”)密钥执行。

使用数字签名,消息本身并不是秘密(没有必要,因为任何拥有公钥的人都可以解密它)但是伴随着基于消息的附加数据,这些数据可以使用公钥进行验证,并且可能具有仅由具有匹配私钥的人计算。

它看起来像下面这样。现在你只需弄清楚你将获得钥匙的位置。

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);
  }
}