gpt4 book ai didi

.net-core - 如何将公钥导入RSA以在.net core中加密

转载 作者:行者123 更新时间:2023-12-02 17:17:39 30 4
gpt4 key购买 nike

我有 publicKey.key,我想将其导入 rsa 加密

这是我的代码:

using (RSA rsa = RSA.Create())
{
var key = Encoding.UTF8.GetBytes("012345678901234567890");

byte[] publicKey = File.ReadAllBytes("text/publicKey.key");

var result = rsa.Encrypt(key, RSAEncryptionPadding.Pkcs1);
}

最佳答案

编辑:2021-11-29 - 更新过时两年的答案,以包含 .NET Core 3.0 API

.NET Core 3.0+ 可以通过特定于格式的方法加载 BER 编码的 key 文件格式(不是文本/PEM 格式):

  • AsymmetricAlgorithm.ImportSubjectPublicKeyInfo
  • AsymmetricAlgorithm.ImportPkcs8PrivateKey
  • AsymmetricAlgorithm.ImportEncryptedPkcs8PrivateKey
  • RSA.ImportRSAPublicKey
  • RSA.ImportRSAPrivateKey
  • ECDsa.ImportECPrivateKey
  • 等等

.NET 5+ 还可以通过通用调度程序加载 PEM 格式 key (因为 PEM 标签标识格式):

  • AsymmetricAlgorithm.ImportFromPem
  • AsymmetricAlgorithm.ImportFromEncryptedPem

无论是 .NET Framework 还是旧版本的 .NET Core(在最初回答时都存在,现在都不再支持)都没有内置的方式来加载裸 key 文件。

对于这些环境,您有几个选择:

  • 将公钥包装到证书中并使用 cert.GetRSAPublicKey()
  • 使用 openssl rsa -in text/publicKey.key -text -noout 复制每个字段的所有十六进制值,并将它们直接导入到 RSAParameters 结构(然后调用(rsa.ImportParameters(rsaParams))
  • 学习 ITU-T X.680 (ASN.1), ITU-T X.690 (德国), PKCS#1 (RSA) 和 RFC 7486 (如果你想读取 PEM 编码的 key )读取 key 文件,然后将其解析为 RSAParameters 结构,并使用 rsa.ImportParameters(rsaParams)。<

值得注意的是,这已被确定为 .NET 中的一个差距,目前已标记为 .NET Core 2.1(尽管它总是有可能无法实现):https://github.com/dotnet/corefx/issues/20414 . (编辑:它不是为 2.1 制作的,而是为 3.0 制作的)

关于.net-core - 如何将公钥导入RSA以在.net core中加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45384379/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com