c#RSA从私钥中提取公钥

有没有办法从c#中的私钥中提取公钥? 如果我做了ToXMLString()那么我可以设置是否需要使用私钥保存的公钥信息。 所以现在我认为有一种方法可以从私有中提取公钥吗?

RSA的普通私钥格式包括公钥(“公共指数”对于以抵抗定时攻击的方式实现私钥操作非常有用)。 因此,可以从私钥中提取公钥。

(理论上可以有一个“纯RSA私钥”,它不包括公共指数,但它有缺点,例如更难以防止侧通道攻击,并降低性能。因此,没有人在他们正确的头脑中做到这一点你可以假设,当你拥有私钥时,你实际上拥有完整的密钥对。)

在C#/ .NET标准库中,公共和私有RSA密钥可以表示为XML字符串( ToXmlString()FromXmlString() )或自定义RSAParameters结构( ExportParameters()ImportParameters() )。 如果您可以获得完整的私钥,那么您只需选择公共字段(模数和公共指数),它们共同构成公钥。 请注意, RSACryptoServiceProvider可能是底层RSA实现的接口,该实现可能拒绝导出私钥(但通常会接受导出公钥)。

如果您可以保存它并包含私钥,那么您要保存的不仅仅是私钥。

但是,如果你确实只有私钥,那么不,你不能从中“提取”公钥。 如果你能做到这一点,那么你今天的大多数安全性都会过时。

所以基本上,我不相信你只有私钥,你有一个密钥对,你应该能够从中提取公钥。

无论是在C#还是.NET中都可以轻松实现,我都不知道。

从私钥获取模数,公共指数 – 最有可能 – 65537.到目前为止,我见过的所有Microsoft密码系统都使用该指数生成公钥。 公共指数和模数的组合是公钥。