摘要: 去年12月的一天夜里,我在网上百无聊赖地瞎逛了一通,正准备下线睡觉,突然,发现windows右下角一个陌生的QQ头像一闪一闪的,随手就点开了,从此,我就和这个叫做*雪的女孩子开始了几乎每天不断的聊天。
阅读全文
摘要: 在asp.net中,有时候页面加载时,后台需要进行一些操作,比如查询数据库等。而且可能这些操作需要花费较长时间,致使前台长时间无响应,甚至有可能造成页面超时。可以采用以下方法解决
阅读全文
在上次
DataSet的加密解密一文发布后,有网友提出采用XML序列化的方式速度较慢,建议用二进制序列化。我觉得很有道理,下面是在VS2005种采用二进制序列化方式结合对称加密算法对DataSet进行加密解密的代码:
1
using System;
2
using System.Collections;
3
using System.Security.Cryptography;
4
using System.IO ;
5
using System.Data;
6
using System.Runtime.Serialization.Formatters.Binary;
7
namespace zjz.ClsDoCode
8

{
9
/**//// <summary>
10
/// ClsEncryption 的摘要说明。
11
/// </summary>
12
public class ClsEncryption
13
{
14
public ClsEncryption()
15
{
16
//
17
// TODO: 在此处添加构造函数逻辑
18
//
19
}
20
//密钥
21
//获取或设置对称算法的机密密钥。机密密钥既用于加密,也用于解密。为了保证对称算法的安全,必须只有发送方和接收方知道该机密密钥。有效密钥大小是由特定对称算法实现指定的,密钥大小在 LegalKeySizes 中列出。
22
private static byte[] DESKey = new byte[]
{11, 23, 93, 102, 72, 41, 18, 12};
23
//获取或设置对称算法的初始化向量
24
private static byte[] DESIV = new byte[]
{75, 158, 46, 97, 78, 57, 17, 36};
25
26
public static void EncryptDataSetToBinary(DataSet objDataSet, string outFilePath)
27
{
28
DESCryptoServiceProvider objDES = new DESCryptoServiceProvider();
29
FileStream fout = new FileStream(outFilePath, FileMode.OpenOrCreate, FileAccess.Write);
30
//用指定的 Key 和初始化向量 (IV) 创建对称数据加密标准 (DES) 加密器对象
31
CryptoStream objCryptoStream = new CryptoStream(fout, objDES.CreateEncryptor(DESKey, DESIV), CryptoStreamMode.Write);
32
//StreamWriter objStreamWriter = new StreamWriter(objCryptoStream);
33
objDataSet.RemotingFormat = SerializationFormat.Binary;
34
BinaryFormatter bf = new BinaryFormatter();
35
bf.Serialize(objCryptoStream, objDataSet);
36
objCryptoStream.Close();
37
fout.Close();
38
39
}
40
public static DataSet DecryptDataSetFromBinary(string inBinFilePath)
41
{
42
DESCryptoServiceProvider objDES = new DESCryptoServiceProvider();
43
FileStream fin = new FileStream(inBinFilePath, FileMode.Open, FileAccess.Read);
44
//用指定的 Key 和初始化向量 (IV) 创建对称数据加密标准 (DES) 加密器对象
45
CryptoStream objCryptoStream = new CryptoStream(fin, objDES.CreateDecryptor(DESKey, DESIV), CryptoStreamMode.Read);
46
BinaryFormatter bf = new BinaryFormatter();
47
DataSet ds = (DataSet)bf.Deserialize(objCryptoStream);
48
fin.Close();
49
return ds;
50
}
51
}
52
}
摘要: 一般情况下,Asp.Net程序中,数据库连接字符串大多存储在配置文件中。如果程序不是手工发布,而是通过安装程序部署,那么通常在安装过程中需要用户输入数据库管理员帐号和密码,以便安装数据库。同时将管理员帐号和密码以及数据库服务器地址(或者数据库连接字符串)写入配置文件中。但是如果不加密,尤其是数据库管理员密码,若以明码形式存储,极容易被窃取。
这就需要对字符串进行加密处理。但是在安装制作软件(我用的是InstallShield 12)中没有提供专用的加密方法,而且在InstallShield中加密过的字符串在Asp.Net(我用的是C#编写Asp.Net)中要能够被解密,则必须用两者通用的加密解密方法。因此我想到,每个字符的ASCII码都是通用的,只要在InstallShield中对字符的ASCII码进行处理,比如加一或移位,得到一个新的字符串,再到C# 中进行逆向操作,就可以还原为原来的字符串。
阅读全文
最近在一个工程中需要对DataSet进行加密,然后以文件形式传输后在另一端解密还原。于是查询了一些资料,发现多是对字符串和文件加密的方法。于是只好自力更生,参考.net的对称加密技术和网上的一些资料,研究出了DataSet的加密方法。
代码比较简单,附下:
1
using System;
2
using System.Collections;
3
using System.Security.Cryptography;
4
using System.IO ;
5
using System.Data;
6
using System.Xml.Serialization;
7
namespace zjz.ClsDoCode
8
{
9
/**//**//**//// <summary>
10
/// ClsEncryption 的摘要说明。
11
/// </summary>
12
public class ClsEncryption
13
{
14
public ClsEncryption()
15
{
16
//
17
// TODO: 在此处添加构造函数逻辑
18
//
19
}
20
//密钥
21
//获取或设置对称算法的机密密钥。机密密钥既用于加密,也用于解密。为了保证对称算法的安全,必须只有发送方和接收方知道该机密密钥。有效密钥大小是由特定对称算法实现指定的,密钥大小在 LegalKeySizes 中列出。
22
private static byte[] DESKey = new byte[]
{11, 23, 93, 102, 72, 41, 18, 12};
23
//获取或设置对称算法的初始化向量
24
private static byte[] DESIV = new byte[]
{75, 158, 46, 97, 78, 57, 17, 36};
25
26
/**//**//**//// <summary>
27
/// 加密DataSet
28
/// </summary>
29
/// <param name="objDataSet"></param>
30
/// <param name="outFilePath"></param>
31
public static void EncryptDataSetToXml(DataSet objDataSet,string outXmlFilePath)
32
{
33
DESCryptoServiceProvider objDES = new DESCryptoServiceProvider();
34
FileStream fout = new FileStream(outXmlFilePath, FileMode.OpenOrCreate, FileAccess.Write);
35
//用指定的 Key 和初始化向量 (IV) 创建对称数据加密标准 (DES) 加密器对象
36
CryptoStream objCryptoStream = new CryptoStream(fout, objDES.CreateEncryptor(DESKey, DESIV), CryptoStreamMode.Write);
37
StreamWriter objStreamWriter = new StreamWriter(objCryptoStream);
38
XmlSerializer objXmlSer = new XmlSerializer(typeof(DataSet));
39
objXmlSer.Serialize(objStreamWriter, objDataSet);
40
objStreamWriter.Close();
41
42
}
43
public static DataSet DecryptDataSetFromXml(string inXmlFilePath)
44
{
45
DESCryptoServiceProvider objDES = new DESCryptoServiceProvider();
46
FileStream fin = new FileStream(inXmlFilePath, FileMode.Open , FileAccess.Read );
47
//用指定的 Key 和初始化向量 (IV) 创建对称数据加密标准 (DES) 加密器对象
48
CryptoStream objCryptoStream = new CryptoStream(fin, objDES.CreateDecryptor(DESKey, DESIV), CryptoStreamMode.Read);
49
TextReader objTxrReader = new StreamReader(objCryptoStream);
50
XmlSerializer objXmlSer = new XmlSerializer(typeof(DataSet));
51
DataSet ds = (DataSet)objXmlSer.Deserialize(objTxrReader);
52
return ds;
53
}
54
}
55
}
56
小结:关于对称加密算法,大家可以参考微软的资料和网上的资料,这里就不多做解释了。下面是源代码文件,里面还包含有字符串和文件加密的方法,当然那些是别人的代码。
/Files/zjzkiss/ClsDoCode.rar