简体   繁体   English

从RSA密钥对获取私钥/公钥base64表示

[英]Get private/public key base64 representation from RSA key pair

I want to generate RSA key pair in C#. 我想在C#中生成RSA密钥对。 I am able to get xml strings of keys, but i need base64 representations of them. 我能够获得xml字符串的键,但我需要base64表示它们。 Here is my code for xml 这是我的xml代码

RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();

privateKeyXmlText = rsa.ToXmlString(true);
publicKeyXmlText = rsa.ToXmlString(false);

but what i want is something like 但我想要的是什么

privateKeyStr=="MIICITAjBgoqhkiG9w0BDAEDMBUEEKaTCK5mE2MsQANxDAfaJe8CAQoEggH47qb6bFO+a2Fj...";
publicKeyStr == "MIIBKjCB4wYHKoZIzj0CATCB1wIBATAsBgcqhkjOPQEBAiEA/////wAA...";

any ideas? 有任何想法吗?

(answer from) C# Export Private/Public RSA key from RSACryptoServiceProvider to PEM string (回答) C#从RSACryptoServiceProvider导出私有/公共RSA密钥到PEM字符串

public static Func<string, string> ToBase64PemFromKeyXMLString= (xmlPrivateKey) =>
        {
            if (string.IsNullOrEmpty(xmlPrivateKey))
                throw new ArgumentNullException("RSA key must contains value!");
            var keyContent = new PemReader(new StringReader(xmlPrivateKey));
            if (keyContent == null)
                throw new ArgumentNullException("private key is not valid!");
            var ciphrPrivateKey = (AsymmetricCipherKeyPair)keyContent.ReadObject();
            var asymmetricKey = new AsymmetricKeyEntry(ciphrPrivateKey.Private);

            PrivateKeyInfo privateKeyInfo = PrivateKeyInfoFactory.CreatePrivateKeyInfo(asymmetricKey.Key);
            var serializedPrivateKey = privateKeyInfo.ToAsn1Object().GetDerEncoded();
            return Convert.ToBase64String(serializedPrivateKey);
        };

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM