- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
网上看了一些教程,生成了公钥和私钥,但是如何设置才能在C#中使用呢?这是我所拥有的:
string publicKey = "...";
string privateKey = "....";
UnicodeEncoding ByteConverter = new UnicodeEncoding();
byte[] dataToEncrypt = ByteConverter.GetBytes("Data to Encrypt");
byte[] encryptedData;
byte[] decryptedData;
string decrptedStr = "";
using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider()) {
RSAParameters myRSAParameters = RSA.ExportParameters(true);
myRSAParameters.Modulus = ByteConverter.GetBytes(publicKey);
myRSAParameters.Exponent = ByteConverter.GetBytes(privateKey);
encryptedData = RSAEncrypt(dataToEncrypt, myRSAParameters, false);
decryptedData = RSADecrypt(encryptedData, myRSAParameters, false);
decrptedStr = ByteConverter.GetString(decryptedData);
}
下面是我从M$网站复制的加密/解密函数:
static public byte[] RSAEncrypt(byte[] DataToEncrypt, RSAParameters RSAKeyInfo, bool DoOAEPPadding) {
try {
byte[] encryptedData;
using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider()) {
RSA.ImportParameters(RSAKeyInfo);
encryptedData = RSA.Encrypt(DataToEncrypt, DoOAEPPadding);
}
return encryptedData;
} catch (CryptographicException e) {
Console.WriteLine(e.Message);
return null;
}
}
static public byte[] RSADecrypt(byte[] DataToDecrypt, RSAParameters RSAKeyInfo, bool DoOAEPPadding) {
try {
byte[] decryptedData;
using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider()) {
RSA.ImportParameters(RSAKeyInfo);
decryptedData = RSA.Decrypt(DataToDecrypt, DoOAEPPadding);
}
return decryptedData;
} catch (CryptographicException e) {
Console.WriteLine(e.ToString());
return null;
}
}
最佳答案
这里有很多问题。您没有指明您的公钥/私钥的编码,但我可以肯定,无论编码如何,仅通过 ByteConverter.GetBytes(...)
获取与 Unicode 编码字符串等效的字节是行不通的。这些应该是数字 RSA 参数的字节数组等价物。
第二个问题是您对“公钥”和“私钥”的解释。公钥不是(只是)模数,私钥不是指数。公钥由模数和(公共(public))指数(Exponent
类型的 RSAParameters
属性,私钥是模数和私有(private)指数( D
RSAParameters
类型的属性)。但是,为了解密,导入到RSAParameters
中的RSACryptoServiceProvider
还必须具有DP
,DQ
,InverseQ
和P
679156791567915679156791567915679156791567915679915 properties( ).
同样,在不知道您的公钥/私钥中使用的编码的情况下,我无法提供有关如何提取适当的值以填充 Q
的必要属性的更多详细信息。
关于c# - 如何在 RSAParameters 上设置公钥和私钥以用于 RSACryptoServiceProvider?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21685939/
这个问题在这里已经有了答案: Correctly create RSACryptoServiceProvider from public key (3 个答案) 关闭 5 年前。 我有用 Base6
RSAParameters对象不支持私钥数据的序列化。如何完全序列化和反序列化私钥? 最佳答案 以下代码可用于序列化和反序列化 RSAParameters对象,使用您自己选择的序列化程序。 using
我想使用我自己提供的非对称 key 在 .Net 4.5 中生成 JWT token ,但我遇到了 System.IdentityModel.Tokens.Jwt 版本 4.0.3 的一些问题。 我最
网上看了一些教程,生成了公钥和私钥,但是如何设置才能在C#中使用呢?这是我所拥有的: string publicKey = "..."; string privateK
我想在c#中用rsa加密和解密数据。我写了这段代码,它可以很好地加密,但我在解密时遇到了问题。我的问题是什么?! 这是我的代码: using System; using System.Security
我想根据 RSACryptoServiceProvider 创建的 key 创建一个 pfx 文件。我试过: certificate.PrivateKey = rsa as AsymmetricAl
我在我的项目中使用以下代码进行加密,一切正常。 RSACryptoServiceProvider x_alg = new RSACryptoServiceProvider( ); // export
P 和 Q 的值与 .Net RSAParameters 的模数值不匹配。根据 RSA 算法和 MSDN 文档,它应该是:P * Q = Modulus 我生成了一个 512 位 RSA key 对并
你好,我有一个在 .net 中生成的 RSA 的私钥和公钥 采用这种格式 string privateKey = "" + "...kCFhsjB4x
我盯着这个看了很长一段时间,感谢 MSDN documentation我真的不知道发生了什么。基本上,我将光盘中的 PFX 文件加载到 X509Certificate2 中,并尝试使用公钥加密字符串并
我是一名优秀的程序员,十分优秀!