gpt4 book ai didi

c# - RSA:如何在 java 中生成私钥并在 C# 中使用它?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:52:27 26 4
gpt4 key购买 nike

我想在 java 中生成私钥,将其保存为某个文件中的 64 位编码字符串然后使用这个保存的文件在 C# 中加密一些短语。我知道用 java 生成 key 并用 64 位编码。我的问题是如何在 C# 中使用此 key ?这是将私钥保存到文本文件中的 java 代码原型(prototype):

KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
RSAKeyGenParameterSpec spec = new RSAKeyGenParameterSpec(1024, RSAKeyGenParameterSpec.F4);
keyGen.initialize(spec);
KeyPair keyPair = keyGen.generateKeyPair();
PrivateKey privateKey = keyPair.getPrivate();
writeToFile("privateKey", Base64.encode(keyPair.getPrivate().getEncoded()));

我想在 C# 中实现以下功能,但找不到如何创建 RSAParameters 或来自私钥的 RSACryptoServiceProvider

 public static string DecryptData(string privateKey64Base, string data64Base)
{
// create using privateKey64Base
// create RSACryptoServiceProvider rsa using RSAParameters above
// byte[] encryptedData = rsa.Encrypt(Convert.FromBase64String(data64Base);
}

最佳答案

This page包含针对您的情况的建议,因为您正在写出 PKCS#8 key (使用 keyPair.getPrivate().getEncoded())

使用这种方法,您将首先使用 Java 端的实用程序将私钥转换为 PRIVATEKEYBLOB 格式。

或者,您可以使用 BouncyCaSTLe C#,它可以读取 key (参见例如 Org.BouncyCaSTLe.Security.PrivateKeyFactory.CreateKey - 当然,您需要先进行 Base64 解码)。

上一个问题的答案是将生成的 BC key 对象转换为 RSACryptoServiceProvider:BouncyCastle RSAPrivateKey to .NET RSAPrivateKey

第三,您可能想看看使用 keystore ,例如PKCS#12,这是一种更标准(和安全)的私钥存储方式。

关于c# - RSA:如何在 java 中生成私钥并在 C# 中使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2185103/

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