繁体   English   中英

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

[英]How to encrypt a string with private key and decrypt with public key?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM