5
저는 C#을 처음 사용합니다. 외부 URL에 정보를 게시하기 전에 문자열 암호화를 요청받습니다. 외부 응용 프로그램에서 입력 한 모든 것은 .der 파일과 .pem 파일입니다. 그들은 암호 해독 할 수 있도록 암호화 된 (문자열) 정보를 보내달라고 요청했습니다.C# 암호화, .der 및 .pem 파일을 입력으로 사용합니다.
나는 많은 게시물을 읽었지만 어떻게 해결할 수 있는지에 대한 정확한 답을 얻을 수 없었다.
다음 코드 스니 j을 사용하여 .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