我在C#项目中使用RSA(Bouncy Castle API)。我生成密钥对用这种方法:Bouncy Castle,RSA:将密钥转换为字符串格式
RsaKeyPairGenerator r = new RsaKeyPairGenerator();
r.Init(new KeyGenerationParameters(new SecureRandom(), 1024));
AsymmetricCipherKeyPair keys = r.GenerateKeyPair();
AsymmetricKeyParameter private_key = keys.Private;
AsymmetricKeyParameter public_key = keys.Public;
现在我想将它们保存在一个txt文件,但问题是,我不能将它们转换为字符串格式。我在另一篇文章中读到钥匙必须使用序列号:
PrivateKeyInfo k = PrivateKeyInfoFactory.CreatePrivateKeyInfo(private_key);
byte[] serializedKey = k.ToAsn1Object().GetDerEncoded();
这是正确的方法吗?如果是的话,我应该怎么做?只需将它们从字节[]转换为字符串?
谢谢您的快速答复。我做你说的,因此我得到了这个** MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAJ7s/B4XNHmNa9LwZ91z ... **我认为它应该是一个BigInteger否?因为在RSA中我们使用数字(p,q ...) – Skeenor 2011-02-23 12:41:09
方法名称(GetDerEncoded)表明返回的数据包含DER编码格式的所有RSA密钥参数(p,q,...)。 – 2011-02-23 13:50:49
@Rami:你的目标是让你可以“补水”回PrivateKeyInfo吗?如果是这样,你不需要知道整数等......你只是想确保你可以序列化到一个字节数组(然后到一个字符串),反之亦然。 – 2011-02-23 13:57:08