2010-12-26 4 views
2

PEM 헤더가없는 RSA 1024 비트 "PKCS1 공개 키"를 만들어 바이트 배열로 저장해야합니다. 인터넷. Framework 나는 RSAParameters.Modulus와 RSAParameters.Exponent (이해할 수있는 공개 키를 구성하는)의 두 배열을 가지고 있습니다. 이 두 배열을 "PEM 헤더가없는 PKCS1 공개 키"로 변환하려면 어떻게해야합니까?Net Framework에서 PKCS1 공개 키 만들기

감사합니다.

답변

1

는 쉬운 방법이 있어야하지만, 한 가지 방법은 Bouncycastle C# library 다음과 같은 예에서와 같이 그 클래스의 몇 가지를 사용하는 것입니다

using System.Security.Cryptography; 
using Org.BouncyCastle.Asn1; 

    public static byte[] DEREncode(RSACryptoServiceProvider rsa) 
    { 
     RSAParameters rsaParams = rsa.ExportParameters(false); 
     DerInteger n = new DerInteger(rsaParams.Modulus); 
     DerInteger e = new DerInteger(rsaParams.Exponent); 
     DerSequence seq = new DerSequence(new Asn1Encodable[] {n, e}); 
     return seq.GetEncoded(); 
    } 
2

만 RSA 공개 키를 인코딩해야하는 경우, 당신이 할 수있는 자신의 래퍼를 작성하면 5 줄의 코딩이 필요합니다. RSA 공개 키는 다음과 같은 ASN.1 구조로 표현되어야한다

RSAPublicKey :: = SEQUENCE {- N publicExponent INTEGER - 계수 INTEGER, 전자 }

하지만를, 이것은 당신이 필요합니다 ASN.1 기본 사항을 배웁니다. 또한이 형식으로 저장해야하는지 확인해야하며 응용 프로그램에 알고리즘 식별자를 추가해야 할 수도 있습니다.

관련 문제