如何使用私钥加密字符串并使用公钥解密?
答
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);
}
}
你不应该加密与RSA任意的字符串。您应该使用RSA加密随机生成的**正确填充的**对称密钥。 – CodesInChaos 2011-01-28 16:15:24
@CodeInChaos:我同意这是RSA在大部分时间都在使用的东西,但是使用RSA并不限于此。 – 2011-01-28 17:21:44