2014-01-23 116 views
1

我有問題,生成一個加密的PEM格式的RSA與C# 私鑰我有這樣的:生成加密RSA PEM與C#

-----BEGIN PRIVATE KEY----- 

MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAOWsj2WijN35Rxbt 
ge2omKZCPNf3AchRxzUpnIEEHz/l9myBn+yZZLhJ3oec+z0ZJO2dOYzhsSDHbw3e 
6VSyFpoES1mje2yPCQFX/JVDdJHIwOSoEDY0SNty6b578x0IweI8jV5IYcSl0RK3 
nlrRLo3bg9bvfZebdlsaA6nW2G3XAgMBAAECgYEA31S3r52rmuEdtnbHI8EQhoLc 
RSikLBURP2myDGZkuK61u3ckel4CaY0y/O2yBAxiM0fyQULpCTXEkFlUzI3LmKoj 
/L0cSlk58xf8hB837/fn/bulnATWSajKn/p4ecXpBlPTySf9MPwoyNwXdyjjz0bQ 
c6oo1U42VybQRNgvWGECQQD/bs/aDjypd9AGUVFn6l6zoQEFRjNLevsHUEveD871 
UUmdkE9AXNyUR1k9W+OH1V74eS29spNphEnnCVV7ANVHAkEA5i8bXxa7g6Tue2/N 
kOjFK5i54RTaGPbjvPcg1N1Wq8pew0lx0lY3q7A+qH3VjiJHwSRifY7n92zkxutS 
qF4q8QJBAIcopYcmfWbW5RZStRadZ1r5WMbnrIDGJEpsbJimGMaqKp/bGnReLsGv 
N0NGehEIEGa+CDwWX/Y3b7t2ruqVOEUCQEVgw2Y4qtH13y9zNklL70nBoZzWtRm7 
KE8nSUz/XYUv3LoNo/HarLLhzzDnpHtPl8L+HXVsojvwJVBTUzmOEHECQAbb2iy3 
tRNcIWj770+6+9qj5fKKvhNNtBoh5rzu79PA9Un8pxEy7OTSVQJ+HtwoRzUrxK07 
IYp9K9Sbyy0yqkc= 

-----END PRIVATE KEY----- 

但我需要它:

-----BEGIN RSA PRIVATE KEY----- 

Proc-Type: 4,ENCRYPTED 

DEK-Info: DES-EDE3-CBC,A07111D1F6B87B67 

mPmRmxCSDcdP6JW9BG12vp33aV1oxc3PRKwbBZJx8noV8RzqR4OnPEI9YzyvhLPT 
APy1XWNhlNa0CPIPEPr1XAJBgkmIBH4RAcjqAvW7X3FbDt5TTkCWad15aCQdRiZN 
vsab9/zX96GePrRyPkiVvTebhyHb0bsEaTl5ryYRcEos0aPreOSm+QJrQ4437I7C 
X5rLMm5mfh7a/BoYN4weH3rOku4+ZFQp3UMPM5HWEoAK/F2hFYPcR0p9h84QrlPO 
WVg5A5dN+28tk6LkWmdfTCXzV3r5jI3Pwo5eI8N6EWCyHMIfwZYIDKymSrCvF5i/ 
XXTh3OFtH1RoFJ9mchWacBN5lDck/2+/GBN5uQs3/Am7pQ4u/S1PBnT4bK4EjAf9 
P6kYKT4aPIarqR2tIJ9HDfEZ3JbsvLbvqJSaxGGhXsRzSylL6W3/IpoxKNFCF39x 
xEqXlN7OvW4fWA5HfM+fBQWNMcyt9FIv418+Z+GmT5TFG8BgaDcniKIk0XnfdDAw 
AajBobsGnFYe/Bk8qbMBQSDs9j0kGV2UE9LCPOh1P1JnLgiBsQeocbVc6FO3v7Kr 
kD3/aGRYMBJ80//0AzIJ/8m2Y+8y9D4i70KSCuC7WjTB85Nl6I77y8w1q3md4WJW 
TbINsCOmb8MpMLIOuS800PgCDM423FaekrmDnfRQKgv0aBPQd5+PY56t+kRzAXCT 
uihv+Pq7Rjpwbjewf/LI4Slt6o8o69VaNjDTOZiW3CYrxv4QQjKmdNdo12av+aJg 
9ts6SgEd6w0nyl/niBMWHhMCV6aZT7SAm0k3GJoDpJN+CbxiJaHV9g== 

-----END RSA PRIVATE KEY----- 

的PEM頂端已經用C#和Bouncy Castle生成,第二個用openssl.exe生成。

Regards

+0

OpenSSL的具有功能的各種密鑰/證書格式之間轉換。我會建議使用它們而不是自己編寫代碼。 – twalberg

+0

謝謝。第二個PEM是用「openssl rsa file.pem -des3 file_enc.enk.key -passout pass:myp @ ss」生成的,我用c# – tyrodeveloper

回答

0

我不知道這是你需要什麼,我是使用這些框架的新手。但是如果你使用Bouncy城​​堡,這是一個加密私鑰的例子。頭我想你可以在PEM對象發現(pem.Headers),並開始結束串是作秀:

static void Main(string[] args) 
    { 
     Console.WriteLine(GeneratePrivateKey("12345", 4096, 4)); 
     Console.ReadLine(); 
    } 

    static string GeneratePrivateKey(string password, int strength, int iterationCount) 
    { 
     var rsa = new Org.BouncyCastle.Crypto.Generators.RsaKeyPairGenerator(); 
     rsa.Init(new Org.BouncyCastle.Crypto.KeyGenerationParameters(new Org.BouncyCastle.Security.SecureRandom(), strength)); 
     var asym = rsa.GenerateKeyPair(); 
     var generator = new Org.BouncyCastle.OpenSsl.Pkcs8Generator(asym.Private, Org.BouncyCastle.OpenSsl.Pkcs8Generator.PbeSha1_3DES); 
     generator.IterationCount = iterationCount; 
     generator.Password = password.ToCharArray(); 
     var pem = generator.Generate(); 
     return Convert.ToBase64String(pem.Content); 
    }