关于加密和解密的问题(立即揭帖) 我们把数据库连接信息放在Web.config中,怎样把它加密后再放入Web.config中,然后Web页面调用的时候再解密?代码怎么写?放在什么地方?(我用的是VB.net) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果真的能够下载到你的应用程序文件,那么只要打开你的dll就能看到解密密钥。不过dll和web.config等文件其实是被自动禁止下载的。 如果dll解密不是问题,那么你可以把参数编译入dll。 ms的那个什么店的有sample.它用的一个console的程序,load web.config的xml,然后加密,再save回去。调用的时候,有个connection类的static string CONN_STRING,掉到它里面的方法时,自动执行解密。 也可以专门有个页面处理。 要注意,那样web application等于要restart了 petshop不是一个很好的例子了吗,里面就有你说到的加密与解密 楼上说的方法比较常有哦!也有这种方法,也可以初始化的时候编辑以下web.config文件,并把密钥加入其中也可以的。 Web.config本身被加密程序就没法用了,但节点的数据是完全可以加密的。加密方法和加密其他文件一样。 using System;using System.Text;using System.Security.Cryptography; class dsacrypto_SignData { public static void Main(String[] args){ //先要将字符串转换为字节数组,这与编码有关。 String str = "this is a test."; byte[] bytes = Encoding.ASCII.GetBytes(str); //选择签名方式,有RSA和DSA DSACryptoServiceProvider dsac = new DSACryptoServiceProvider(); byte[] sign = dsac.SignData(bytes); //sign便是出来的签名结果。 //下面是认证了 DSACryptoServiceProvider dsac2 = new DSACryptoServiceProvider(); dsac2.FromXmlString(dsac.ToXmlString(false)); bool ver = dsac2.VerifyData(bytes, sign); if (ver) { Console.WriteLine("通过"); } else { Console.WriteLine("不能通过"); } } } 你可以不那个加密,拿出来的时候解一下就可以了public class EncryptString { //随机选8个字节既为密钥也为初始向量 Byte[] byKey64={42, 16, 93, 156, 78, 4, 218, 32}; Byte[] Iv64={55, 103, 246, 79, 36, 99, 167, 3}; public EncryptString() { // // TODO: 在此处添加构造函数逻辑 // } /// <summary> /// 标准的DES加密 /// </summary> /// <param name="str_Sql">标准的DES加密</param> public String Encrypt(String strText) { //Byte[] byKey = {}; //Byte[] IV = {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF}; try { //byKey = System.Text.Encoding.UTF8.GetBytes(strEncrKey.Substring(0, 8)); DESCryptoServiceProvider des = new DESCryptoServiceProvider(); Byte[] inputByteArray = Encoding.UTF8.GetBytes(strText); MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(byKey64, Iv64), CryptoStreamMode.Write); cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); return Convert.ToBase64String(ms.ToArray()); } catch(Exception ex) { return ex.Message; } } /// <summary> /// 标准的DES解密 /// </summary> /// <param name="str_Sql">标准的DES解密</param> public String Decrypt(String strText) { //Byte[] byKey = {}; //Byte[] IV = {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF}; Byte[] inputByteArray = new byte[strText.Length]; try { //byKey = System.Text.Encoding.UTF8.GetBytes(sDecrKey.Substring(0, 8)); DESCryptoServiceProvider des = new DESCryptoServiceProvider(); inputByteArray = Convert.FromBase64String(strText); MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(byKey64, Iv64), CryptoStreamMode.Write); cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); System.Text.Encoding encoding = System.Text.Encoding.UTF8; return encoding.GetString(ms.ToArray()); } catch(Exception ex) { return ex.Message; } } 1.设计个加密和解密的算法(弄什么样的这个你自己说了算)2.把要加密的数据加密后写入WEB.CONFIG。3.把WEB.CONFIG是一个XML文件,可以读写(详细的方法去网上找吧)4.读出加密后Web.Config里的信息后在解密得到解密后的信息... 有没有VB.net的代码呢???大家帮忙想一想 web.config 是不能下载的,为什么要加密呢? 如何获取Gridview某列的值 jquery 问题 无刷新显现刚刚回复的帖子 dataRelation未将对象引用设置到对象的实例错误 在asp.net中调用javascript脚本? 为什么取不到TextBox的内容啊 到底Visual Studio 2005 中文版什么时候才有得下载? 急,如何编辑中的模板列的值?马上结! 我记和asp.net webforms中可以用mypage.aspx和mypage.mobile.aspx,用户浏览时,可根据浏览器,自动呈现页面的 TreeView的问题。如何删除当前选择的节点呢?? 求助,问题在内容中 很有挑战的问题,大家来研究一下。
也可以专门有个页面处理。
要注意,那样web application等于要restart了
也有这种方法,也可以初始化的时候编辑以下web.config文件,并把密钥加入其中也可以的。
using System.Text;
using System.Security.Cryptography; class dsacrypto_SignData {
public static void Main(String[] args){
//先要将字符串转换为字节数组,这与编码有关。
String str = "this is a test.";
byte[] bytes = Encoding.ASCII.GetBytes(str);
//选择签名方式,有RSA和DSA
DSACryptoServiceProvider dsac = new DSACryptoServiceProvider();
byte[] sign = dsac.SignData(bytes);
//sign便是出来的签名结果。 //下面是认证了
DSACryptoServiceProvider dsac2 = new DSACryptoServiceProvider();
dsac2.FromXmlString(dsac.ToXmlString(false));
bool ver = dsac2.VerifyData(bytes, sign);
if (ver) {
Console.WriteLine("通过");
} else {
Console.WriteLine("不能通过");
}
}
}
public class EncryptString
{
//随机选8个字节既为密钥也为初始向量
Byte[] byKey64={42, 16, 93, 156, 78, 4, 218, 32};
Byte[] Iv64={55, 103, 246, 79, 36, 99, 167, 3};
public EncryptString()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
/// <summary>
/// 标准的DES加密
/// </summary>
/// <param name="str_Sql">标准的DES加密</param>
public String Encrypt(String strText)
{
//Byte[] byKey = {};
//Byte[] IV = {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF};
try
{
//byKey = System.Text.Encoding.UTF8.GetBytes(strEncrKey.Substring(0, 8));
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
Byte[] inputByteArray = Encoding.UTF8.GetBytes(strText);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(byKey64, Iv64), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
return Convert.ToBase64String(ms.ToArray());
}
catch(Exception ex)
{
return ex.Message;
}
}
/// <summary>
/// 标准的DES解密
/// </summary>
/// <param name="str_Sql">标准的DES解密</param>
public String Decrypt(String strText)
{
//Byte[] byKey = {};
//Byte[] IV = {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF};
Byte[] inputByteArray = new byte[strText.Length];
try
{
//byKey = System.Text.Encoding.UTF8.GetBytes(sDecrKey.Substring(0, 8));
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
inputByteArray = Convert.FromBase64String(strText);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(byKey64, Iv64), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
System.Text.Encoding encoding = System.Text.Encoding.UTF8;
return encoding.GetString(ms.ToArray());
}
catch(Exception ex)
{
return ex.Message;
}
}
2.把要加密的数据加密后写入WEB.CONFIG。
3.把WEB.CONFIG是一个XML文件,可以读写(详细的方法去网上找吧)
4.读出加密后Web.Config里的信息后在解密得到解密后的信息...
大家帮忙想一想