.Net RSA使用私钥加密

时间:2015-06-30 11:40:44

标签: c# .net encryption rsa

我发现了类似的问题,但细节上存在差异,因此我开始提出新的问题。我必须使用X509 RSA私钥加密64个字节。它必须是"直接"加密没有哈希 - 就像64字节是哈希输出。我试过这个:

X509Certificate2 cert = new X509Certificate2("my_cert_with_private_key.pfx", "pwd", X509KeyStorageFlags.Exportable);
RSACryptoServiceProvider csp = (RSACryptoServiceProvider)cert.PrivateKey;
byte[] encrypted = csp.Encrypt(my_data, false);

经过多次尝试解密后:

RSACryptoServiceProvider pub = (RSACryptoServiceProvider)cert.PublicKey.Key;
pub.Decrypt(encrypted, false);

我发现实际上csp的加密是使用公钥进行的(因为使用PrivateKey的测试解密是可以的)。否则我得到" Key not found"错误。似乎.Net实现假设只能使用公钥进行加密,即使您想使用私钥,它也会使用公钥。 "它们的"想法是使用Sign加密私钥。不幸的是我必须指定哈希算法并且没有找到如何使用" RAW"模式(即没有哈希)。有没有办法使用不同的类并使用私钥进行简单加密?

0 个答案:

没有答案