RSA加密和解密 密钥文件:公钥public.key,私钥private.key如何用这个两个文件进行RSA加密和解密,谢谢,麻烦给一下代码。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 using System;using System.Security.Cryptography;using System.Text;namespace xfqz86Helper{ public static class RSA { /// <summary> /// RAS加密 /// </summary> /// <param name="xmlPublicKey">公钥</param> /// <param name="EncryptString">明文</param> /// <returns>密文</returns> public static string RSAEncrypt(string xmlPublicKey, string EncryptString) { byte[] PlainTextBArray; byte[] CypherTextBArray; string Result = String.Empty; System.Security.Cryptography.RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); rsa.FromXmlString(xmlPublicKey); int t = (int)(Math.Ceiling((double)EncryptString.Length / (double)50)); for (int i = 0; i <= t - 1; i++) { PlainTextBArray = (new UnicodeEncoding()).GetBytes(EncryptString.Substring(i * 50, EncryptString.Length - (i * 50) > 50 ? 50 : EncryptString.Length - (i * 50))); CypherTextBArray = rsa.Encrypt(PlainTextBArray, false); Result += Convert.ToBase64String(CypherTextBArray) + "ThisIsSplit"; } return Result; } /// <summary> /// RAS解密 /// </summary> /// <param name="xmlPrivateKey">私钥</param> /// <param name="DecryptString">密文</param> /// <returns>明文</returns> public static string RSADecrypt(string xmlPrivateKey, string DecryptString) { byte[] PlainTextBArray; byte[] DypherTextBArray; string Result = String.Empty; System.Security.Cryptography.RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); rsa.FromXmlString(xmlPrivateKey); string[] Split = new string[1]; Split[0] = "ThisIsSplit"; string[] mis = DecryptString.Split(Split, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < mis.Length; i++) { PlainTextBArray = Convert.FromBase64String(mis[i]); DypherTextBArray = rsa.Decrypt(PlainTextBArray, false); Result += (new UnicodeEncoding()).GetString(DypherTextBArray); } return Result; } /// <summary> /// 产生公钥和私钥对 /// </summary> /// <returns>string[] 0:私钥;1:公钥</returns> public static string[] RSAKey() { string[] keys = new string[2]; System.Security.Cryptography.RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); keys[0] = rsa.ToXmlString(true); keys[1] = rsa.ToXmlString(false); return keys; } }} 先谢谢,我的公钥和私钥是对方给我的.key文件,要用这两个文件进行加密和解密 把你的公钥Key文件内容发上来看看。一般Key文件里面直接是密钥字串。 MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDfoS5mMkl6oyT1CKaEaNVSmJTgs1AOjOvGJ7P3Qnje3/hsWI3ROX0imxuzng82rpRthnyQwAbAAu3DXj2xPyxz1Dmvt7nYM+gQX+YY+cVMvBAodDdFSZwwnTFbGBazvXIHaakFKZHYUWdUuYbYpbZKbqrt/uscOoKPChsLFOlNkQIDAQAB 上面就是key文件里的公钥,怎么用它来加密和解密呢?一楼的xmlPublicKey是不是需要XML类型的? 啊哦 微软有例子的 自己去msdn上看吧http://msdn.microsoft.com/en-us/library/system.security.cryptography.rsacryptoserviceprovider.aspxhttp://blog.csdn.net/heqichanggg/article/details/4043243 例子里的key是随机生成的吧?我已经有key了 MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBANv7UD/dRjuYTy4IZSSYvso3AEoDwrYCVI7/m+S9n2yaUGgjj8nW1yMHo5q72bj5ZKam/a08CXFkAdRD3yaWzZ+JAHRoLnyEiD9SYkpbfu7nqnWNI44MNhqa6sl4MkSjCL0MZLbn8zHzfr81G2Seamtr9dshHqb6cvD7EeYhQvNHAgMBAAECgYAK9nE/XYWcfrCjeKOhuUL4zNjk118itucD4VUhhxmkzePn7K3Dv0MlacILegUVpMgRTg0iTvWhgvxcWa2LPMSucPNp+chV2oDuGakkIQnXU+/qfL1h/tkHZ4i0ivkaSl+WrIfejOaFSc9LnNE0XOBH2LtYYGfLVzVcVubssn/dsQJBAPqJ/bFA+/StUajJyerYRxv3I7gdQMb3MXC2igrYB97BVRJKZ33TBfLvtiQ9yjS3PquomGHdGi9wMY6phht/G4MCQQDgxs/6UCMQL4j40oWZaaT9xK//XJ9l7f/aFnTAx7feoA3TpwCAJVSUL+xeZq55AzM9GKgx1s/PgIKT0FfCT6ntAkEA85XSJ9IMpVkVecunG0Nn75KbEdivMEMJuJJhKCXdkP/bHEtmz3ip4gaZyiahQBuhPPhQH2X+nXyxUgkUMAumzQJAd5+XA8IuRujlXna7fx/IHP3WJHLoqdh1t10IGaiwZByN/zv7ejdjwdGXW84NwH1BgZxjttJ5mhbsZzoT2meHKQJAINuA1sG9hmhORW7Pc1Ce0jkx+gBTQyxFqLNWqQD+UzOP86Y9Jd+Ot8BAGnf0WfrRT1a426g+9NyHn8d9cY4ofQ==用这个加密的时候,提示 无效的密钥集参数,怎么解决呢 详细参考http://blog.csdn.net/llwinnner/article/details/4011936 求助!算法问题,某个金额可以买多少种商品 方法体超时怎么办? 在MDI中,如何实现子窗体在ShowDialog后,可以最小化 ReDim BaseData(30, 3) As String是什么意思?(抢分贴) C#.NET如何设置gridview某个单元格是否可见,请大侠们帮帮忙! 关于。net操作GIS的问题 socket 的并发问题 我的配置管理器中的Release被我删除了怎么办 .net 实现下载 求示例 VS2010 求各位大神帮忙 C#中能不能定义动态数组 vs2008 单元测试的问题 vs2010自动关闭
using System.Security.Cryptography;
using System.Text;namespace xfqz86Helper
{
public static class RSA
{
/// <summary>
/// RAS加密
/// </summary>
/// <param name="xmlPublicKey">公钥</param>
/// <param name="EncryptString">明文</param>
/// <returns>密文</returns>
public static string RSAEncrypt(string xmlPublicKey, string EncryptString)
{
byte[] PlainTextBArray;
byte[] CypherTextBArray;
string Result = String.Empty;
System.Security.Cryptography.RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(xmlPublicKey);
int t = (int)(Math.Ceiling((double)EncryptString.Length / (double)50));
for (int i = 0; i <= t - 1; i++)
{ PlainTextBArray = (new UnicodeEncoding()).GetBytes(EncryptString.Substring(i * 50, EncryptString.Length - (i * 50) > 50 ? 50 : EncryptString.Length - (i * 50)));
CypherTextBArray = rsa.Encrypt(PlainTextBArray, false);
Result += Convert.ToBase64String(CypherTextBArray) + "ThisIsSplit";
}
return Result;
}
/// <summary>
/// RAS解密
/// </summary>
/// <param name="xmlPrivateKey">私钥</param>
/// <param name="DecryptString">密文</param>
/// <returns>明文</returns>
public static string RSADecrypt(string xmlPrivateKey, string DecryptString)
{
byte[] PlainTextBArray;
byte[] DypherTextBArray;
string Result = String.Empty;
System.Security.Cryptography.RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(xmlPrivateKey);
string[] Split = new string[1];
Split[0] = "ThisIsSplit";
string[] mis = DecryptString.Split(Split, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < mis.Length; i++)
{
PlainTextBArray = Convert.FromBase64String(mis[i]);
DypherTextBArray = rsa.Decrypt(PlainTextBArray, false);
Result += (new UnicodeEncoding()).GetString(DypherTextBArray);
}
return Result;
}
/// <summary>
/// 产生公钥和私钥对
/// </summary>
/// <returns>string[] 0:私钥;1:公钥</returns>
public static string[] RSAKey()
{
string[] keys = new string[2];
System.Security.Cryptography.RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
keys[0] = rsa.ToXmlString(true);
keys[1] = rsa.ToXmlString(false);
return keys;
}
}
}
把你的公钥Key文件内容发上来看看。一般Key文件里面直接是密钥字串。
s1AOjOvGJ7P3Qnje3/hsWI3ROX0imxuzng82rpRthnyQwAbAAu3DXj2xPyxz1Dmv
t7nYM+gQX+YY+cVMvBAodDdFSZwwnTFbGBazvXIHaakFKZHYUWdUuYbYpbZKbqrt
/uscOoKPChsLFOlNkQIDAQAB
http://msdn.microsoft.com/en-us/library/system.security.cryptography.rsacryptoserviceprovider.aspxhttp://blog.csdn.net/heqichanggg/article/details/4043243
http://blog.csdn.net/llwinnner/article/details/4011936