我使用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