Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用私钥(RSA)解密字符串_C#_Encryption_Rsa_Private Key_Rsacryptoserviceprovider - Fatal编程技术网

C# 使用私钥(RSA)解密字符串

C# 使用私钥(RSA)解密字符串,c#,encryption,rsa,private-key,rsacryptoserviceprovider,C#,Encryption,Rsa,Private Key,Rsacryptoserviceprovider,我有一个公钥和一个私钥,还有一个我想要解密的字符串 公钥的格式如下: -----BEGIN PUBLIC KEY----- (key here) -----END PUBLIC KEY----- -----BEGIN RSA PRIVATE KEY----- (key here) -----END RSA PRIVATE KEY----- 私钥的格式如下: -----BEGIN PUBLIC KEY----- (key here) -----END PUBLIC KEY----- ---

我有一个公钥和一个私钥,还有一个我想要解密的字符串

公钥的格式如下:

-----BEGIN PUBLIC KEY-----
(key here)
-----END PUBLIC KEY-----
-----BEGIN RSA PRIVATE KEY-----
(key here)
-----END RSA PRIVATE KEY----- 
私钥的格式如下:

-----BEGIN PUBLIC KEY-----
(key here)
-----END PUBLIC KEY-----
-----BEGIN RSA PRIVATE KEY-----
(key here)
-----END RSA PRIVATE KEY----- 
我要解密的字符串已使用公钥加密,然后我需要使用私钥对其进行解密

我在想我该怎么做

我一直在研究这一点,发现
rsacyptoserviceprovider
但对于加密/解密,它似乎希望密钥采用带模数和指数的XML格式


我的问题是,是否有一种方法可以使用我拥有的数据生成具有模数和指数的XML格式,或者是否有另一种方法可以使用我拥有的数据对字符串进行解密。

对于解析非证书的私钥/公钥,可以使用。那里有可以根据需要转换密钥的源代码。转换密钥后,可以使用下面引用的加密和解密函数

如果您有证书,可以使用从文件加载证书和密钥。加载X509Certificate2后,可以使用
(rsacyptoServiceProvider)cert.PublicKey.Key
(rsacyptoServiceProvider)cert.PrivateKey
获取加密密钥


使用MSDN文档中示例中的加密和解密方法。您需要知道加密数据的格式,以及使用的对称算法(如果有),然后根据需要调整代码。

这是pem格式,您可以使用(通过nuget)读取私钥并使用它进行解密。我有一个项目(谷歌的c#实现),我用它来创建一个keyczar密钥集——请参见代码:。如果您甚至不担心密钥参数,并且直接使用bouncy castle api进行解密,那么工作就会少很多


如果没有要解密的现有数据,可以使用keyczar框架,keyczar框架更注重简单性和安全加密,而不是解决所有问题的工具。

非对称密钥无法解密长度超过其密钥长度的数据。以下问题的答案可能会帮助您:@owlstead您是对的,我在看问题时忽略了这一点,我看到了PEM样式,没有仔细看足够地我将修改答案。