5
我是新來的c#。在我將這些信息發佈到外部URL之前,我被要求加密一個字符串。我從外部應用程序獲得的所有輸入信息都是.der文件和.pem文件。他們要求我發送加密的(字符串)信息,以便他們能夠解密。c#加密,得到.der和.pem文件作爲輸入
我已閱讀了很多帖子,但無法得到確切的答案,我該如何解決這個問題。
我正在使用下面的代碼片段來讀取.pem文件並創建一個證書。但在上新增了X509Certificate2(certBuffer);一行丟給我一個「找不到請求的對象」的錯誤。我不確定我是否正朝着正確的方向前進。如果是的話,幫我弄清楚這個問題。否則告訴我一個方法。提前致謝!
var pem = System.IO.File.ReadAllText("C:\\Users\\bvarapr1\\Desktop\\fordsync\\public_qa.pem");
byte[] certBuffer = GetBytesFromPEM(pem, "PUBLIC KEY");
var certificate = new X509Certificate2(certBuffer);
RSACryptoServiceProvider provider = (RSACryptoServiceProvider)certificate.PrivateKey;
string testString = "DIGITALMOON";
string encryptedVIN = RSAEnc(provider, testString);
byte[] GetBytesFromPEM(string pemString, string section)
{
var header = String.Format("-----BEGIN {0}-----", section);
var footer = String.Format("-----END {0}-----", section);
var start = pemString.IndexOf(header, StringComparison.Ordinal) + header.Length;
var end = pemString.IndexOf(footer, start, StringComparison.Ordinal) - start;
if (start < 0 || end < 0)
{
return null;
}
return Convert.FromBase64String(pemString.Substring(start, end));
}
此代碼的工作形成了我,但你的PEM文件需要將僅包含公開密鑰。我不知道你的公鑰是如何生成的,但我使用了「openssl genrsa -out private_key.pem 1024」。然後,我使用「openssl rsa -in private_key.pem -pubout -out public_key.pem」導出公鑰以供在上面的代碼中使用。 – Jacob