gpt4 book ai didi

c# - 使用 X.509 证书在非对称加密中使用公钥

转载 作者:行者123 更新时间:2023-11-30 21:34:55 27 4
gpt4 key购买 nike

前段时间我读到一篇关于使用非对称 key (如公钥和私钥)安全发送数据的文章。我所了解的是,服务器 有 1 个 key (private key) 用于加密数据,所有 clients 使用第二个 key (公钥) 对其进行解密。

现在我应该如何接收 key 以及我应该如何使用它?

如果我从服务器收到证书,它不会同时包含公钥和私钥吗?!

X509Store certStore = new X509Store(StoreName.My, StoreLocation.CurrentUser);
var cert = GetCertificate(certStore);
var privatekey= cert.PrivateKey;
var publicKey= cert.PublicKey;

是否可以从证书中删除私钥?如何?以及如何了解证书是否有私钥?

最佳答案

首先要澄清一点:

Public-key cryptography 公钥用于加密数据,私钥(由服务器)用于解密数据。

私钥的拥有者保存私钥,只共享一个公钥。来自服务器的任何证书都应一个公钥。(如果证书包含私钥,那将是一个很大的安全问题。您可以解密来自任何其他用户的消息)

要检查证书是否有私钥,您可以使用 HasPrivateKey-Property

cert.HasPrivateKey;

要获得仅包含公钥的证书,您可以使用:

byte[] bytes = cert.Export(X509ContentType.Cert);
var publicCert = new X509Certificate2(bytes);

关于c# - 使用 X.509 证书在非对称加密中使用公钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49731729/

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