我試圖找到一種方法來讀取在C#中使用OpenSSL PKCS#8 RSA創建的privateKey,而無需使用外部庫。如何在C#中導入PKCS#8 RSA privateKey(由OpenSSL創建)
有人知道我該怎麼做嗎?
我試圖找到一種方法來讀取在C#中使用OpenSSL PKCS#8 RSA創建的privateKey,而無需使用外部庫。如何在C#中導入PKCS#8 RSA privateKey(由OpenSSL創建)
有人知道我該怎麼做嗎?
做到這一點與外部庫最簡單的方法,是使用(免費)Chillkat Public/Private Key Component:使用,導入密鑰可以使用just a few lines of code做,如果你願意支付的$ 149或使圖書館的其餘部分,它也會使處理一般的密碼概念變得更容易。
而且不像正規的Microsoft .NET Framework,Mono項目確實似乎有一個PKCS8 implementation爲其full C# source是可用的。這可能適合作爲一個起點,以防萬一你絕對不能依賴外部庫,假設(LGPL 2.0)與Mono代碼相關的許可證適用於你...
最後,PKCS #8 format不是太難以解析,並且RSA/DSA密鑰對對象根據PKCS #11,並且一旦找出所有位都去了,相對容易轉換爲.NET X509Certificate - 我在前段時間在VB.NET中實際執行了這一操作,但不幸的是我沒有能夠共享該代碼。
感謝您的回答。
我的腳本來創建RSA密鑰我使用OpenSSL的白衣:
(Linux的腳本)
openssl genrsa -out ${NAME}_openssl.key 2048
openssl pkcs8 -topk8 -in ${NAME}_openssl.key -nocrypt > ${NAME}.key
openssl req -new -x509 -key ${NAME}.key -out ${NAME}.crt -outform DER
在C#中,我們需要專用密鑰以XML格式。我用this解析器來做到這一點。
要解密德的挑戰,我們需要使用:
byte[] challange = server.getChallenge();
RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider();
rsaProvider.FromXmlString(Demo.Properties.Resources.XmlPrivateKey);
byte[] plaintext = rsaProvider.Decrypt(challange, false);
要加密絲毫服務器證書,我們需要使用:
RSACryptoServiceProvider rsaProvider = x509.PublicKey.Key as RSACryptoServiceProvider;
byte[] answer = RsaProvider.Encrypt(plaintext, false);
感謝JavaScience諮詢
我需要免費和開源的東西。但是,謝謝你的幫助。 – Makah
我確信它很容易做到,但我不想這樣做。這就是爲什麼我有這個圖書館。簡單,開源和免費。 – Makah
經過您的編輯,我同意你的意見。 – Makah