gpt4 book ai didi

.net - RSA 私钥是否始终包含公钥,还是只是 .NET?

转载 作者:行者123 更新时间:2023-12-01 13:48:16 25 4
gpt4 key购买 nike

我在 .NET 2 中使用 RSACryptoServiceProvider,似乎公钥/私钥对的 Private 部分也总是包含 Public 部分。

我需要使用我的公钥加密一些信息,并允许对方只解密我加密的内容。我不希望他们知道我是如何加密我的信息的。在 .NET 中使用 RSACryptoServiceProvider 是否可行?

最佳答案

私钥始终包含公钥。

您可能真正想要的是签名。使用相同的 .NET 类,您可以使用您的私钥对数据进行签名,并使用公钥(显然不包含私钥)验证对方的签名。

    public static string Sign(string data, string privateAndPublicKey)
{
byte[] dataBytes = Encoding.UTF8.GetBytes(data);
RSACryptoServiceProvider provider = CreateProviderFromKey(privateAndPublicKey);
byte[] signatureBytes = provider.SignData(dataBytes, "SHA1");
return Convert.ToBase64String(signatureBytes);
}

public static bool Verify(string data, string signature, string publicKey)
{
byte[] dataBytes = Encoding.UTF8.GetBytes(data);
byte[] signatureBytes = Convert.FromBase64String(signature);
RSACryptoServiceProvider provider = CreateProviderFromKey(publicKey);
return provider.VerifyData(dataBytes, "SHA1", signatureBytes);
}

private static RSACryptoServiceProvider CreateProviderFromKey(string key)
{
RSACryptoServiceProvider provider = new RSACryptoServiceProvider();
provider.FromXmlString(key);
return provider;
}

关于.net - RSA 私钥是否始终包含公钥,还是只是 .NET?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/301302/

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