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

问题描述 投票:2回答:2

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

公钥采用以下格式:

-----BEGIN PUBLIC KEY-----
(key here)
-----END PUBLIC KEY-----

私钥采用以下格式:

-----BEGIN RSA PRIVATE KEY-----
(key here)
-----END RSA PRIVATE KEY----- 

我要解密的字符串已使用公钥加密,然后我需要使用私钥解密它。

我想知道如何做到这一点。

我一直在研究这个并找到了RSACryptoServiceProvider,但是对于加密/解密,似乎希望密钥是带有模数和指数的XML格式。

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

c# encryption rsa private-key rsacryptoserviceprovider
2个回答
1
投票

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

如果你没有想要解密的现有数据,你可以使用keyczar框架,keyczar框架更多的是关于简单性和安全加密的东西,而不是每个问题的工具。


1
投票

要解析非证书的私钥/公钥,可以使用RSA Public, Private, and PKCS #8 key parser。那里有可用的源代码,可以根据需要转换密钥。转换密钥后,您可以使用下面引用的加密和解密功能。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.