2012-06-09 40 views
2

使用BounceCastle我有以下代碼工作。 它生成密鑰對並返回ASN.1 DER編碼格式。獲取DER編碼的公鑰

//Generate new key 
var generator = new RsaKeyPairGenerator(); 
generator.Init (new KeyGenerationParameters (new SecureRandom(), 1024)); 
var keyPair = generator.GenerateKeyPair(); 

//Save private key for later use 
keyParameters = (RsaKeyParameters)keyPair.Private; 

//Export ASN.1 DER-encoded 
SubjectPublicKeyInfo info = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(keyPair.Public); 
return info.GetEncoded(); 

它已通過第三方軟件的測試和使用。

我的問題是:我怎樣才能使上述編碼的逆。 擁有編碼的公鑰,我如何將公鑰導入RsaKeyParameters。

我想我即將做類似的事情。

SubjectPublicKeyInfo s = new SubjectPublicKeyInfo(????, publicKeyBytes); 
RsaKeyParameters key = (RsaKeyParameters)PublicKeyFactory.CreateKey(s); 

所以,如果這是接近我需要知道要放在????中,它需要一個AlgorithmIdentifier類型的對象。

回答

3

感謝this answer我得到了下面的代碼:

 AsymmetricKeyParameter asymmetricKeyParameter = PublicKeyFactory.CreateKey(req.PublicKey); 
     RsaKeyParameters key = (RsaKeyParameters) asymmetricKeyParameter;