You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6中RSA.ExportRSAPrivateKey为何跨机器返回不同值?

RSA密钥导入导出不一致问题咨询

测试步骤

  1. 打开命令提示符
  2. 运行命令:dotnet new console --name Keys
  3. 将Program.cs内容替换为以下代码:
using System.Security.Cryptography;

const string originalKey = "MIICXQIBAAKBgQC9/9FGsQFqJim5XaNp12yHjySy3RO9q0ZWPl97bmep4XR/Tx3bDfTPzIcp/NWrRQP0XSbSwBTFq2ypYWXLtWg5CCMtrwzkK0iSy5KrKA1XwsatAW/AfmCtbyUK0BUfs/D54vXdB0WS48TK+Ab/sIcvupag4O4e9NFB+y/dlr4MVwIDAQABAoGASsSm2EjDo8AM31NIAViy7s2XxYNWR2dlMH8vF+WkiaedLpQ1zYQ6eKOl9RH4C4QHQFx/8KOCCR+ijS003+stbcZtPrigAFTLU3bmbBbSfkQjvgMCgMiiqIITlnFFPWI5OqBn5PcKqun6EJvvUxdrAxXQEuXFH9j34O6t0wVJ+CECQQDjAPy1sCAyDkSYRtcolAhbE8TcUGk8atchILdyE/sc0JbssdcZDfvMqdRC155W8V3iPgm3iVZs2WDGDum24mCJAkEA1kTIeJIt9X+1MZcKPi7ArZSCyiwbsDo874mDEIrk3l8h43rcyVq61qdlRGcdyLMT2NSzxVsebsIUez2kiD0N3wJAUalRP6sUae1oD7+sNxTJzLnX38mtkeZ9bZVvaMJ3W25OXOe9EW5OXtnZWhJnC6/YrkLTDAuD47Rvc9B5kyjswQJBALWHUpwrpDpANt9LikcCTwUANApach7MSEHcK6kBM0NeL5TMy27fqjkfWsEn52jYprDmC2PhfZfyX23F3LX7m9sCQQC1uu65Dwl/UopM34Km7NRm+N1TC26UiaWxcYXgYafE22Dy2XGhUMpolIAMoz9wkw2HW4QihtZ6Jwq6VXbOdQu4";

// Import the key
using var rsa = RSA.Create();
rsa.ImportRSAPrivateKey(Convert.FromBase64String(originalKey), out _);

// Export the key
var exported = Convert.ToBase64String(rsa.ExportRSAPrivateKey());

if (exported == originalKey)
    Console.WriteLine("Pass");
else
    Console.WriteLine($"Failed: exported key is \"{exported}\" .");
  1. 运行命令:dotnet run

多机器测试结果

  • Alice:Windows 10、.NET 6.0.400、Visual Studio 2022,输出Pass
  • Bob:Windows 10、.NET 6.0.400、Visual Studio 2019,输出Pass
  • Carrie:Windows Server 2016(版本1607)、.NET 6.0.400、Visual Studio 2019,输出Failed,导出密钥如下:
MIICXQIBAAKBgQC9/9FGsQFqJim5XaNp12yHjySy3RO9q0ZWPl97bmep4XR/Tx3bDfTPzIcp/NWrRQP0XSbSwBTFq2ypYWXLtWg5CCMtrwzkK0iSy5KrKA1XwsatAW/AfmCtbyUK0BUfs/D54vXdB0WS48TK+Ab/sIcvupag4O4e9NFB+y/dlr4MVwIDAQABAoGAC29hFg3DKwipoYlm3hDkFvM2NI76XYOjE7+57sDXUQchBCSBLyo+M1945xMGJ8JbRD1y/7jQceZ+VLdoRq61W1bOG+MHI6jidcuqKNZkTrDERuSxbO1kIA0/+6zIfXn4z5ok10AWYX8o4CEB5zx0w8CkHG8XPHs7R1tiDegVGNECQQDjAPy1sCAyDkSYRtcolAhbE8TcUGk8atchILdyE/sc0JbssdcZDfvMqdRC155W8V3iPgm3iVZs2WDGDum24mCJAkEA1kTIeJIt9X+1MZcKPi7ArZSCyiwbsDo874mDEIrk3l8h43rcyVq61qdlRGcdyLMT2NSzxVsebsIUez2kiD0N3wJAUalRP6sUae1oD7+sNxTJzLnX38mtkeZ9bZVvaMJ3W25OXOe9EW5OXtnZWhJnC6/YrkLTDAuD47Rvc9B5kyjswQJBALWHUpwrpDpANt9LikcCTwUANApach7MSEHcK6kBM0NeL5TMy27fqjkfWsEn52jYprDmC2PhfZfyX23F3LX7m9sCQQC1uu65Dwl/UopM34Km7NRm+N1TC26UiaWxcYXgYafE22Dy2XGhUMpolIAMoz9wkw2HW4QihtZ6Jwq6VXbOdQu4

补充信息

  1. 将导出密钥重新导入后,两台机器的RSAParameters仅D参数完全不同
  2. 三台机器的RSA.Create().GetType().Assembly.Location路径一致,对应程序集校验和相同
  3. 使用随机生成的新密钥时,三台机器测试均通过,仅该特定密钥出现问题

疑问

在.NET SDK版本相同的情况下,为何该问题仅在部分机器出现?

内容的提问来源于stack exchange,提问作者kanders84152

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 04:01:07