首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RSACryptoServiceProvider公共/私钥进口

RSACryptoServiceProvider公共/私钥进口
EN

Stack Overflow用户
提问于 2016-12-12 13:57:01
回答 1查看 5.2K关注 0票数 1

我想通过RSACryptoServiceProvider签署和验证数据

为此,我需要公用钥匙和私钥。

在我的项目中,我将MyPublic和私钥存储在XML文件中。

有一次,我生成MyPublic和私钥

代码语言:javascript
复制
public bool SignutureCheckForVerify(string myData, byte[] SignedData)
    {
        ...

        RSACryptoServiceProvider RSAalg = new RSACryptoServiceProvider();
             RSAalg.FromXmlString(MyPublicKey());
        return RSAalg.VerifyData(Encoding.ASCII.GetBytes(myData), new   MineCryptoService(), SignedData);

       ...

    }

    private static string MyPublicKey()
    {
        return "<RSAKeyValue><Modulus>-----Pubic Key Here ----</RSAKeyValue>";
    }

在上面,我展示了“通过公钥验证数据”

我的SignData方法类似。

在那里,

代码语言:javascript
复制
  RSAalg.FromXmlString(GetPrivateKey());
   ...
  RSAalg.SignData(...)

我的问题是这样的;在某些例子中,我认识到这一点;通过crt/pem/cert等证书文件导入公钥和私钥。在那里,我存储在XML文件上。

İ是我的解决方案错了吗?

第二个问题是,

如果我使用此方法导入键

https://msdn.microsoft.com/en-us/library/tswxhw92(v=vs.110).aspx

GetKeyFromContainer("MyKeyContainer");

MyKeyContainer私钥和公钥是静态的吗?

每次运行时,我是否可以拥有相同的私钥/公钥

或者每次运行我都有不同的键集?强调文本。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-12 18:17:33

我的解决方案错了吗?

这取决于您的需求和威胁模型。RSACryptoServiceProvider的签名生成应该显式地设置为MD5或SHA-1以外的散列。从你的问题上还不清楚这是否发生了。

如果我使用此方法导入键 https://msdn.microsoft.com/en-us/library/tswxhw92(v=vs.110).aspx GetKeyFromContainer("MyKeyContainer"); MyKeyContainer私钥和公钥是静态的吗?

是的,不管怎么说,这都是使用钥匙商店的一般想法。

每次运行时,我能拥有相同的私钥/公钥吗?或者每次生成签名时应该有不同的密钥集?

是的,您可以,考虑到您使用一个充足的密钥大小,例如2048位或更高。

实际上,为了您的解决方案是安全的,接收方需要信任公钥。当没有建立信任时,任何人都可以向您发送他们的公钥。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41102504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档