当前位置: 首页 > 知识库问答 >
问题:

RSACryptoServiceProvider公钥/私钥导入

司英飙
2023-03-14

我想通过RSACryptServiceProvider签名和验证数据

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

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

有一次,我生成了我的公钥和私钥

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方法类似。

在那里,

  RSAalg.FromXmlString(GetPrivateKey());
   ...
  RSAalg.SignData(...)

我的问题是:举个例子,我认识到;通过crt/pem/cert等导入公钥和私钥。证书文件。在那里我存储了XML文件。

我的解决方案错了吗?

第二个问题是,

如果我用这个方法导入密钥

https://msdn . Microsoft . com/en-us/library/tswxhw 92(v = vs . 110)。文件

GetKeyFromContainer(“MyKeyContainer”);

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

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

还是每次运行我都有不同的按键设置?强调文本

共有1个答案

郎磊
2023-03-14

我的解决方案错了吗?

这取决于您的要求和威胁模型。RSACryptoServiceProvider的签名生成应显式设置为MD5或SHA-1以外的哈希。从您的问题中不清楚是否发生了这种情况。

如果我用这个方法导入密钥

https://msdn . Microsoft . com/en-us/library/tswxhw 92(v = vs . 110)。文件

GetKeyFromContainer(“MyKeyContainer”)

MyKeyContainer的私有和公共密钥是静态的吗?

是的,这就是使用密钥存储的一般想法。

每次运行时,我可以拥有相同的私钥/公钥吗?还是每次生成签名时都应该设置不同的密钥?

是的,如果您使用足够大的密钥大小,比如2048位或更高,您可以做到。

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

 类似资料:
  • 我试图从私钥中生成一个公共ECDSA密钥,但我还没有在互联网上找到多少关于如何实现这一点的帮助。几乎所有的事情都是为了从公钥规范生成公钥,我不知道如何得到它。到目前为止,我总结了以下内容: 但是,在运行时,我会出现以下错误: 我做错了什么?有更好/更简单的方法吗? 编辑:我已经设法编译了一些代码,但它不能正常工作: 当我运行它时,它会生成一个公钥,但它不是私钥对应的公钥。

  • 我被告知,对于非对称密码学,您使用公钥加密明文,并使用私钥解密明文。所以我尝试了以下方法: 以及加密和解密函数 我希望控制台显示,但它显示的是这个。我是否错误地使用了RSACryptoServiceProvider?

  • 我有这样的代码来导入一个ECDH键: 这是可行的,但是它只返回私钥,而不是整个密钥对。如何从私钥中导出公钥?

  • Auth0提供了两个JWT库,一个用于Node:Node jsonwebtoken,另一个用于Java:Java JWT。事实证明,JavaJWT不支持公钥/私钥对。 然而,另一个java库jjwt库声称支持该特性。但是,该文档没有显示如何在jjwt中使用自己的公钥/私钥对。 我创建了私有/公钥对,并在Node中成功地使用了node-jsonwebToken: 但是我发现在Java中用JWT无法做

  • 我试图理解使用带有私钥/公钥(RS512)的JSON Web令牌的逻辑,当将从客户端(在本例中是React Native App)发送到服务器的数据有效载荷签名时。 我认为私钥/公钥的全部意义在于将私钥保持为私钥(在我的服务器上),并将公钥交给成功登录应用程序的人。 我认为,对于我的服务器的每个API请求,经过身份验证的应用程序用户将使用公钥创建JWT(在客户端),服务器将使用私钥验证来自API请

  • 我使用secp192r1曲线生成了ECC公钥和私钥。公共密钥数组长度为75,私有密钥数组长度125。为什么私钥比公钥长?为什么私钥的长度不是公钥的两倍?为什么由于secp192r1私钥不是192位=24字节?