调用ImportFromPem加载RSA私钥报错“密钥无效”,求排查原因
问题分析与解决
核心原因:私钥字符串格式错误
你的代码里私钥用了@前缀的字符串字面量,里面的\n会被当作普通字符而非换行符,而PEM格式要求每一行是64字符以内的Base64内容,并且用实际换行分隔。错误的\n字符会直接破坏PEM的结构,导致ImportFromPem无法识别有效密钥。
修复步骤
修正私钥的换行格式:
把字符串里的\n替换成实际换行(在C#多行字符串里直接换行),或者去掉@前缀让\n被解析为换行。示例如下:string privateKeyPem = @"-----BEGIN RSA PRIVATE KEY----- MIIBOgIBAAJBAKj34GkxFhD90vcNLYLInFEX6Ppy1tPf9Cnzj4p4WGeKLs1Pt8Qu KUpRKfFLfRYC9AIKjbJTWit+CqvjWYzvQwECAwEAAQJAIJLixBy2qpFoS4DSmoEm o3qGy0t6z09AIJtH+5OeRV1be+N4cDYJKffGzDa88vQENZiRm0GRq6a+HPGQMd2k TQIhAKMSvzIBnni7ot/OSie2TmJLY4SwTQAevXysE2RbFDYdAiEBCUEaRQnMnbp7 9mxDXDf6AU0cN/RPBjb9qSHDcWZHGzUCIG2Es59z8ugGrDY+pxLQnwfotadxd+Uy v/Ow5T0q5gIJAiEAyS4RaI9YG8EWx/2w0T67ZUVAw8eOMB6BIUg0Xcu+3okCIBOs /5OiPgoTdSy7bcF9IGpSE8ZgGKzgYQVZeN97YE00 -----END RSA PRIVATE KEY-----";验证私钥本身有效性:
你提供的私钥是PKCS#1格式的RSA私钥,结构本身合法(修正换行后),也可以用OpenSSL工具验证:openssl rsa -check -in private_key.pem
关于填充的说明
填充是解密阶段需要关注的问题(比如选择RSAEncryptionPadding.OaepSHA256或Pkcs1),和当前私钥导入失败无关。只有私钥成功导入后,才需要匹配加密时使用的填充方式来完成解密。
内容的提问来源于stack exchange,提问作者u314
相关产品推荐
相关产品推荐

