我使用makecert以下参数创建一个X509证书X509证书:创建的OpenSSL/makecert工具
makecert -r -pe -n “CN =客户” -ss MyApp的
我想用这个证书来用RSA算法来加密和解密数据。 我期待在Windows证书库中生成的证书,一切似乎都没问题(它有一个私钥,公钥是一个1024位的RSA密钥,等等......)
现在我用这个C#代码来加密数据:
X509Store store = new X509Store("MyApp", StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certs = store.Certificates.Find(X509FindType.FindBySubjectName, "Client", false);
X509Certificate2 _x509 = certs[0];
using (RSACryptoServiceProvider rsa = (RSACryptoServiceProvider)_x509.PublicKey.Key)
{
byte[] dataToEncrypt = Encoding.UTF8.GetBytes("hello");
_encryptedData = rsa.Encrypt(dataToEncrypt, true);
}
当执行Encrypt方法时,我收到带有消息“Bad key”的CryptographicException。
我认为代码没问题。可能我没有正确创建证书。 有何评论? 谢谢
----------------编辑--------------
如果有人知道如何使用OpenSsl创建证书,它也是对我有效的答案。
创建证书时您指定的私钥/公钥对的位是什么? 可能你必须指定更长的键4048位? – berkay 2010-06-09 17:56:38
我不确定你在说什么选项。我只是使用了我在makecert命令中显示的选项。如果你正在谈论另一个人,则假定默认值。但我的公钥有1024位。 – 2010-06-09 18:00:57
好,然后我从来没有使用makecert只是搜索来创建它4048 bits.1024位是打破了这个原因,你可以得到错误。 – berkay 2010-06-09 18:03:13