如何在C#中将单行格式的RSA私钥转换为标准格式?
可以通过C#实现单行RSA私钥到标准PEM格式的转换
直接通过字符串处理即可完成格式转换,核心是提取Base64内容并按每行64字符拆分,再拼接标准的PEM头部和尾部。以下是具体实现代码:
转换方法实现
public static string ConvertToStandardRsaPrivateKey(string singleLineKey) { const string pemHeader = "-----BEGIN RSA PRIVATE KEY-----"; const string pemFooter = "-----END RSA PRIVATE KEY-----"; // 清理输入:移除多余引号和空格 string cleanedKey = singleLineKey.Trim().Trim('"'); // 提取Base64主体内容,兼容头部少一个'-'的异常情况 string base64Content = cleanedKey.Replace(pemHeader, "") .Replace(pemFooter, "") .Replace("-----BEGIN RSA PRIVATE KEY----", ""); // 按每行64字符拆分Base64字符串 var lineList = new List<string>(); for (int i = 0; i < base64Content.Length; i += 64) { int lineLength = Math.Min(64, base64Content.Length - i); lineList.Add(base64Content.Substring(i, lineLength)); } // 拼接成标准PEM格式 return $"{pemHeader}\n{string.Join("\n", lineList)}\n{pemFooter}"; }
使用示例
// 你的单行RSA私钥 string singleLineRsa = "-----BEGIN RSA PRIVATE KEY----MIICXAIBAAKBgQCuMhJ8DYGiSzLw88PvHgMGCJOT+og1i0dfcsmo7jBspwuM+sBqFVY7SD4ojbt2AYBYfPaxIMEb/7lMRPenWG1RAajp3wYvyCKLFq568hLVuyXesEK0gEX12niKkrFQewDGdNzomUUgAIK5h70423WREl+sqlshuOahsvkPjd+8DQIDAQABAoGAF0y/SDSOSGUClVQluxAqm13+T2bNXUwZ6dxyuNPTSlU1qE/J+OaNuDQ7jDUZA/nDbxKX9K1K5zHXWSpIbevYAysk+h5aPyE1mdfWcrSANgwrHe9DLCTpUaQVJgnGJ1zd+OzckqtelGUXPeyeiohVJcnZYz1cIjlaHX2l7jHOL4ECQQDlN1MmUqYVh2vghpTBEBCZHwii/SQFTwPGhaB5k6eRuiESrLfWO4bD9Woor2OakXpEv4GyOCm2aA8VC52oWWpxAkEAwozi9nxboUvGGR5r28R93V0ozd4GdgQDRGdvEKQjmHWcmRsee2S4nGjGlcSsV7zV8RpiBpTgIteemOvfXCOhXQJAYZ9WgpPguHqcr1uiLzewWgalnwVBOiGU8hAncKA6Vg5314RIJ63ij8MOG5XXThV3haAqlMTmvxFCmyv/UZwDgQJAZmsOzJ35Cve+CNk4BNDzRcbWRVJd6mEAa1FcadFPH+LCluNs7569hTGvYYbRB7tUkYHHGxniyNTkHDMIOhRTzQJBAIpgo2taR/BZR9kPYgtI4RRkHG2dykMWL4++X6RkG0V+xMuwnarItpdp2Q0CgciOFFv4r1avv99Z836a4YgsJQw="; // 转换为标准格式 string standardRsaKey = ConvertToStandardRsaPrivateKey(singleLineRsa); // 输出结果 Console.WriteLine(standardRsaKey);
这段代码会输出符合要求的标准PEM格式密钥,能够被大多数支持RSA的库正常识别。
内容的提问来源于stack exchange,提问作者dodo
相关产品推荐
相关产品推荐

