生成密钥对:
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
secKey = rsa.ToXmlString(true);
pubKey = rsa.ToXmlString(false);
string strPubKeyName = "PubKey.xml";
string strSecKeyName = "SecKey.xml";
string strSecKeyPath = System.Configuration.ConfigurationSettings.AppSettings["KeyPath"].Trim();
string strPubKeyPath = strSecKeyPath;
if(!Directory.Exists(strSecKeyPath))
{
Directory.CreateDirectory(strSecKeyPath);
}
if(!Directory.Exists(strPubKeyPath))
{
Directory.CreateDirectory(strPubKeyPath);
}
strSecKeyPath += strSecKeyName;
strPubKeyPath += strPubKeyName;
StreamWriter writer=new StreamWriter(strSecKeyPath);
string PPKeyXml=secKey;//保存私钥
writer.Write(PPKeyXml);
writer.Close();
writer=new StreamWriter(strPubKeyPath);
string PKeyXml=pubKey;//保存公钥
writer.Write(PKeyXml);
writer.Close();用私钥加密:
public string Encrypt(string txtUserInfo)
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(secKey);
// 加密对象
RSAPKCS1SignatureFormatter f = new RSAPKCS1SignatureFormatter(rsa);
f.SetHashAlgorithm("SHA1");
byte[] source = System.Text.ASCIIEncoding.ASCII.GetBytes(txtUserInfo);
SHA1Managed sha = new SHA1Managed();
byte[] result = sha.ComputeHash(source);
byte[] b = f.CreateSignature(result);
string resultString = Convert.ToBase64String(b).ToString(); StreamWriter writer=new StreamWriter(@"d:\macrowing\key\EncryptUserCode.xml");
string PPKeyXml=resultString;//保存加密后的用户输入
writer.Write(PPKeyXml);
writer.Close();
return resultString;
}
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
secKey = rsa.ToXmlString(true);
pubKey = rsa.ToXmlString(false);
string strPubKeyName = "PubKey.xml";
string strSecKeyName = "SecKey.xml";
string strSecKeyPath = System.Configuration.ConfigurationSettings.AppSettings["KeyPath"].Trim();
string strPubKeyPath = strSecKeyPath;
if(!Directory.Exists(strSecKeyPath))
{
Directory.CreateDirectory(strSecKeyPath);
}
if(!Directory.Exists(strPubKeyPath))
{
Directory.CreateDirectory(strPubKeyPath);
}
strSecKeyPath += strSecKeyName;
strPubKeyPath += strPubKeyName;
StreamWriter writer=new StreamWriter(strSecKeyPath);
string PPKeyXml=secKey;//保存私钥
writer.Write(PPKeyXml);
writer.Close();
writer=new StreamWriter(strPubKeyPath);
string PKeyXml=pubKey;//保存公钥
writer.Write(PKeyXml);
writer.Close();用私钥加密:
public string Encrypt(string txtUserInfo)
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(secKey);
// 加密对象
RSAPKCS1SignatureFormatter f = new RSAPKCS1SignatureFormatter(rsa);
f.SetHashAlgorithm("SHA1");
byte[] source = System.Text.ASCIIEncoding.ASCII.GetBytes(txtUserInfo);
SHA1Managed sha = new SHA1Managed();
byte[] result = sha.ComputeHash(source);
byte[] b = f.CreateSignature(result);
string resultString = Convert.ToBase64String(b).ToString(); StreamWriter writer=new StreamWriter(@"d:\macrowing\key\EncryptUserCode.xml");
string PPKeyXml=resultString;//保存加密后的用户输入
writer.Write(PPKeyXml);
writer.Close();
return resultString;
}
解决方案 »
- MVC路由问题-如何让路由与URL重写共存
- 这个网站开发要多久?
- 在asp.net中如何使用winMail等第三方邮件服务器发送电子邮件?
- 如何在datalist嵌套中找到平级的datalist
- 给两个时间。比如2004-6 2007-9 怎么求出当中的年月啊如2004-7 2004-8 2004-9 等 然后把这些时间取出来。放在哪里好呢。怎么遍历啊
- 不刷新DropDownList如何弄呢
- 高手进来,utf-8和gb2312兼容问题
- 请问我装了IIS后为什么打不开.ASPX文件?
- 怎样用web.config来保存常数?
- vs.net的问题
- .Net 2.0的Profile的问题
- 如何将选定的一段日期转成datagrid的字段??
private string Decrypt(bool doOAEPPadding)
{ doOAEPPadding = true;
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
StreamReader reader=new StreamReader(@"d:\macrowing\key\PubKey.xml");
string PKey=reader.ReadToEnd();
rsa.FromXmlString(PKey);
reader.Close();
reader = new StreamReader(@"d:\macrowing\key\EncryptUserCode.xml");
string dataToDecrypt = reader.ReadToEnd();
RSAPKCS1SignatureDeformatter f = new RSAPKCS1SignatureDeformatter(rsa);
reader.Close(); f.SetHashAlgorithm("SHA1"); byte[] key = Convert.FromBase64String(PKey); SHA1Managed sha = new SHA1Managed();
byte[] name = sha.ComputeHash(ASCIIEncoding.ASCII.GetBytes(dataToDecrypt));
return name.ToString();
}这个报错:
failed: Base-64 字符串中的无效字符。
System.FormatException: Base-64 字符串中的无效字符。
at System.Convert.FromBase64String(String s)