-
/// <summary>
/// 配置文件名称
/// </summary>
internal class ConfigName
{
/// <summary>
/// DBConnectionString
/// </summary>
public const string DBConnectionString = "SlowX.DAL.DBConnectionString";
/// <summary>
/// EmDataBaseHelper
/// </summary>
public const string EmDataBaseHelper = "SlowX.DAL.Enums.DataBaseHelper.EmDataBaseHelper";
/// <summary>
/// DataBaseVersion
/// </summary>
public const string DataBaseVersion = "SlowX.DAL.Enums.DataBaseVersion";
/// <summary>
/// DBConnectionStringKey
/// </summary>
public const string DBConnectionStringKey = "SlowX.DAL.DBConnectionStringKey";
/// <summary>
/// (DBConnectionStringPwdEnKey)加密密码
/// </summary>
public const string DBConnectionStringPwdEnKey = "SlowX.DAL.DBConnectionStringPwdEnKey";
/// <summary>
/// 连接串密码DBConnectionStringPwd
/// </summary>
public const string DBConnectionStringPwd = "SlowX.DAL.DBConnectionStringPwd";
/// <summary>
/// 加密方式
/// </summary>
public const string EmDbConnStringEncrypt = "SlowX.DAL.EmDbConnStringEncrypt";
}
-
/// <summary>
/// 数据库链接串的驱动
/// </summary>
public DBConnectionDriver()
{
InitItem();
}
/// <summary>
/// 解密转义数据库连接串
/// </summary>
/// <param name="strDbConnectionString">数据库连接串</param>
/// <param name="strDBConnectionStringPwd">密文</param>
/// <param name="strDBConnectionStringPwdEnKey">密钥</param>
/// <param name="emDbConnStringEncryptV">加密方式</param>
/// <param name="en"></param>
/// <returns></returns>
private string ToDbConnectionString
(
string strDbConnectionString,
string strDBConnectionStringPwd,
string strDBConnectionStringPwdEnKey,
SlowX.DAL.Enums.DbConnStringEncrypt.EmDbConnStringEncrypt emDbConnStringEncryptV,
System.Text.Encoding en
)
{
if (strDBConnectionStringPwd == null
||
strDBConnectionStringPwd.Length == 0)
{
// 没有设定密码 //
return strDbConnectionString;
}
string convertPwd = null;
switch (emDbConnStringEncryptV)
{
case SlowX.DAL.Enums.DbConnStringEncrypt.EmDbConnStringEncrypt.明文:
convertPwd = strDBConnectionStringPwd;
break;
case SlowX.DAL.Enums.DbConnStringEncrypt.EmDbConnStringEncrypt.异或:
convertPwd = GetMD5(EnKey + strDBConnectionStringPwdEnKey, en);
convertPwd = XorDecryptToString
(
strDBConnectionStringPwd,
convertPwd,
en
);
break;
case SlowX.DAL.Enums.DbConnStringEncrypt.EmDbConnStringEncrypt.DES3:
convertPwd = GetMD5(EnKey + strDBConnectionStringPwdEnKey, en).Substring(0, 16);
convertPwd = DES3Decrypt
(
convertPwd,
strDBConnectionStringPwd,
en
);
break;
default:
throw new Exception
(
"方法:"
+ MethodBase.GetCurrentMethod().ReflectedType.FullName
+ " "
+ MethodBase.GetCurrentMethod().ToString()
+ " 发生异常:"
+ "枚举("
+ emDbConnStringEncryptV.GetType().FullName
+ "."
+ emDbConnStringEncryptV.ToString()
+ ")未知,对应的代码尚未实现。"
);
}
return string.Format(strDbConnectionString, convertPwd);
}
/// <summary>
/// 初始化
/// </summary>
public void InitItem()
{
// 将数据库连接串写入数组 //
Dictionary<int, DBConnectionItem> varDictionaryDBConnectionItemValue
=
new Dictionary<int, DBConnectionItem>();
//
DBConnectionItem dbConnectionItemValue = null;
// 数据库连接串 //
string strDbConnectionString
=
ConfigurationManager.AppSettings[ConfigName.DBConnectionString];
#region 默认属性
// 默认数据库类型 //
SlowX.DAL.Enums.DataBaseHelper.EmDataBaseHelper emDataBaseHelperDefaultValue
=
SlowX.DAL.Enums.DataBaseHelper.EmDataBaseHelper.SQLServer;
// 默认数据库版本 //
int dataBaseVersionDefaultValue = 1;
// 默认加密方式 //
SlowX.DAL.Enums.DbConnStringEncrypt.EmDbConnStringEncrypt
emDbConnStringEncryptDefaultV
=
SlowX.DAL.Enums.DbConnStringEncrypt.EmDbConnStringEncrypt.明文;
// 默认加密密钥 //
string DBConnectionStringPwdEnKeyDefault = "";
#endregion 默认属性
System.Text.Encoding enGB2312
=
System.Text.Encoding.GetEncoding("gb2312");
string str = null;
#region 变量属性
// 默认数据库类型 //
SlowX.DAL.Enums.DataBaseHelper.EmDataBaseHelper emDataBaseHelperValue
=
SlowX.DAL.Enums.DataBaseHelper.EmDataBaseHelper.SQLServer;
// 默认数据库版本 //
int dataBaseVersionValue = 1;
// 默认加密方式 //
SlowX.DAL.Enums.DbConnStringEncrypt.EmDbConnStringEncrypt
emDbConnStringEncryptV
=
SlowX.DAL.Enums.DbConnStringEncrypt.EmDbConnStringEncrypt.明文;
// 默认加密密钥 //
string strDBConnectionStringPwdEnKey = "";
string strDBConnectionStringPwd = "";
#endregion 变量属性
if (strDbConnectionString != null
&&
strDbConnectionString.Length != 0)
{
// 数据库类型 //
str = ConfigurationManager.AppSettings[ConfigName.EmDataBaseHelper];
emDataBaseHelperValue
=
UtilitySlowXDALFunctions.GetEmDataBaseHelperByAppConfig
(
str,
emDataBaseHelperDefaultValue
);
// 数据库版本 //
str
=
ConfigurationManager.AppSettings[ConfigName.DataBaseVersion];
dataBaseVersionValue
=
UtilitySlowXDALFunctions.GetDataBaseVersionByAppConfig
(
str,
dataBaseVersionDefaultValue
);
// 密码加密方式 //
str
=
ConfigurationManager.AppSettings[ConfigName.EmDbConnStringEncrypt];
// 加密方式 //
emDbConnStringEncryptV
=
SlowX.DAL.Enums.DbConnStringEncrypt.GetDefaultEmByString
(
str,
emDbConnStringEncryptDefaultV
);
// 加密密钥 //
strDBConnectionStringPwdEnKey
=
ConfigurationManager.AppSettings[ConfigName.DBConnectionStringPwdEnKey];
// 密码 //
strDBConnectionStringPwd
=
ConfigurationManager.AppSettings[ConfigName.DBConnectionStringPwd];
strDbConnectionString
=
ToDbConnectionString
(
strDbConnectionString,
strDBConnectionStringPwd,
strDBConnectionStringPwdEnKey,
emDbConnStringEncryptV,
enGB2312
);
strDbConnectionString
=
UtilitySlowXDALFunctions.ConvertDBConnectionString
(
strDbConnectionString,
emDataBaseHelperValue
);
dbConnectionItemValue
=
new DBConnectionItem
(
strDbConnectionString,
emDataBaseHelperValue,
dataBaseVersionValue
);
varDictionaryDBConnectionItemValue.Add(0, dbConnectionItemValue);
emDataBaseHelperDefaultValue = emDataBaseHelperValue;
dataBaseVersionDefaultValue = dataBaseVersionValue;
emDbConnStringEncryptDefaultV = emDbConnStringEncryptV;
DBConnectionStringPwdEnKeyDefault = strDBConnectionStringPwdEnKey;
}
string strMaxKey = "";
int i = 1;
int maxLoop = 99;
if (strMaxKey == null || strMaxKey == "")
{
for ( i = 1; i < maxLoop; ++i)
{
strDbConnectionString
=
ConfigurationManager.AppSettings[ConfigName.DBConnectionString + i.ToString()];
if (strDbConnectionString == null
||
strDbConnectionString.Length == 0)
break;
// 数据库类型 //
str = ConfigurationManager.AppSettings[ConfigName.EmDataBaseHelper + i.ToString()];
emDataBaseHelperValue
=
UtilitySlowXDALFunctions.GetEmDataBaseHelperByAppConfig
(
str,
emDataBaseHelperDefaultValue
);
// 数据库版本 //
str
=
ConfigurationManager.AppSettings[ConfigName.DataBaseVersion + i.ToString()];
dataBaseVersionValue
=
UtilitySlowXDALFunctions.GetDataBaseVersionByAppConfig
(
str,
dataBaseVersionDefaultValue
);
// 密码加密方式 //
str
=
ConfigurationManager.AppSettings[ConfigName.EmDbConnStringEncrypt + i.ToString()];
// 加密方式 //
emDbConnStringEncryptV
=
SlowX.DAL.Enums.DbConnStringEncrypt.GetDefaultEmByString
(
str,
emDbConnStringEncryptDefaultV
);
// 加密密钥 //
strDBConnectionStringPwdEnKey
=
ConfigurationManager.AppSettings[ConfigName.DBConnectionStringPwdEnKey + i.ToString()];
if (strDBConnectionStringPwdEnKey == null)
strDBConnectionStringPwdEnKey = DBConnectionStringPwdEnKeyDefault;
// 密码 //
strDBConnectionStringPwd
=
ConfigurationManager.AppSettings[ConfigName.DBConnectionStringPwd + i.ToString()];
strDbConnectionString
=
ToDbConnectionString
(
strDbConnectionString,
strDBConnectionStringPwd,
strDBConnectionStringPwdEnKey,
emDbConnStringEncryptV,
enGB2312
);
strDbConnectionString
=
UtilitySlowXDALFunctions.ConvertDBConnectionString
(
strDbConnectionString,
emDataBaseHelperValue
);
dbConnectionItemValue
=
new DBConnectionItem
(
strDbConnectionString,
emDataBaseHelperValue,
dataBaseVersionValue
);
varDictionaryDBConnectionItemValue.Add(i, dbConnectionItemValue);
}
}
else
{
maxLoop = int.Parse(strMaxKey) + 1;
for ( i = 1; i < maxLoop; ++i)
{
strDbConnectionString
=
ConfigurationManager.AppSettings[ConfigName.DBConnectionString + i.ToString()];
if (strDbConnectionString == null
||
strDbConnectionString.Length == 0)
continue;
// 数据库类型 //
str = ConfigurationManager.AppSettings[ConfigName.EmDataBaseHelper + i.ToString()];
emDataBaseHelperValue
=
UtilitySlowXDALFunctions.GetEmDataBaseHelperByAppConfig
(
str,
emDataBaseHelperDefaultValue
);
// 数据库版本 //
str
=
ConfigurationManager.AppSettings[ConfigName.DataBaseVersion + i.ToString()];
dataBaseVersionValue
=
UtilitySlowXDALFunctions.GetDataBaseVersionByAppConfig
(
str,
dataBaseVersionDefaultValue
);
// 密码加密方式 //
str
=
ConfigurationManager.AppSettings[ConfigName.EmDbConnStringEncrypt + i.ToString()];
// 加密方式 //
emDbConnStringEncryptV
=
SlowX.DAL.Enums.DbConnStringEncrypt.GetDefaultEmByString
(
str,
emDbConnStringEncryptDefaultV
);
// 加密密钥 //
strDBConnectionStringPwdEnKey
=
ConfigurationManager.AppSettings[ConfigName.DBConnectionStringPwdEnKey + i.ToString()];
if (strDBConnectionStringPwdEnKey == null)
strDBConnectionStringPwdEnKey = DBConnectionStringPwdEnKeyDefault;
// 密码 //
strDBConnectionStringPwd
=
ConfigurationManager.AppSettings[ConfigName.DBConnectionStringPwd + i.ToString()];
strDbConnectionString
=
ToDbConnectionString
(
strDbConnectionString,
strDBConnectionStringPwd,
strDBConnectionStringPwdEnKey,
emDbConnStringEncryptV,
enGB2312
);
strDbConnectionString
=
UtilitySlowXDALFunctions.ConvertDBConnectionString
(
strDbConnectionString,
emDataBaseHelperValue
);
dbConnectionItemValue
=
new DBConnectionItem
(
strDbConnectionString,
emDataBaseHelperValue,
dataBaseVersionValue
);
varDictionaryDBConnectionItemValue.Add(i, dbConnectionItemValue);
}
}
m_dictionaryDBConnectionItemValue = varDictionaryDBConnectionItemValue;
string defaultKey
=
ConfigurationManager.AppSettings[ConfigName.DBConnectionStringKey];
if (defaultKey == null || defaultKey.Length == 0)
{
m_dbConnectionItemValue
=
varDictionaryDBConnectionItemValue[0];
}
else
{
m_dbConnectionItemValue
=
varDictionaryDBConnectionItemValue[int.Parse(defaultKey)];
}
}
-
/// <summary>
/// 加密密钥1
/// </summary>
private const string EnKey = "www.slowx.net";
/// <summary>
/// 只能用保护,不然反射不到
/// </summary>
protected static DBConnectionDriver m_instance
=
new DBConnectionDriver();
/// <summary>
/// 设置静态实体
/// </summary>
/// <param name="_instance"></param>
public static void SetInstance
(
DBConnectionDriver _instance
)
{
m_instance = null;
m_instance = _instance;
}
/// <summary>
/// 静态实体
/// </summary>
public static DBConnectionDriver instance
{
get
{
//if (m_instance == null)
//{
// // throw new Exception("未有系统实例化!");
// m_instance = new DBConnectionDriver();
//}
return m_instance;
}
}
-
#region 异或加密和解密
/// <summary>
/// 字符串转成byte[]数组的String
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
private string StringToByteArrayString(string str)
{
if (str == null || str.Length == 0)
return "";
byte[] byteArray = Encoding.Default.GetBytes(str);
return ByteArrayToString(byteArray);
}
/// <summary>
/// 字符串转成byte[]数组的String
/// </summary>
/// <param name="str"></param>
/// <param name="_encoding"></param>
/// <returns></returns>
private string StringToByteArrayString(string str, System.Text.Encoding _encoding)
{
if (str == null || str.Length == 0)
return "";
if (_encoding == null)
{
MethodBase methodBaseValue = MethodBase.GetCurrentMethod();
throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> Encoding _encoding 为空。");
}
byte[] byteArray = _encoding.GetBytes(str);
return ByteArrayToString(byteArray);
}
/// <summary>
///
/// </summary>
/// <param name="byteArray"></param>
/// <returns></returns>
private string ByteArrayToString(byte[] byteArray)
{
if (byteArray == null)
{
MethodBase methodBaseValue = MethodBase.GetCurrentMethod();
throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> byte[] byteArray 为空。");
}
StringBuilder theResult = new StringBuilder();
foreach (byte b in byteArray)
{
theResult.Append(b.ToString().PadLeft(3, '0'));
}
return theResult.ToString();
}
/// <summary>
/// 字符串转成byte[]数组
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
private byte[] StringToByteArray(string str)
{
if (str == null || str.Length == 0)
return null;
int iLen = str.Length;
if (iLen % 3 != 0)
{
MethodBase methodBaseValue = MethodBase.GetCurrentMethod();
throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> " + "iLen % 3 != 0,传入的字符串不是合理的byte[]值。");
}
int iArrayLen = iLen / 3;
byte[] theResult = new byte[iArrayLen];
string strItem = string.Empty;
byte bItem = 1;
for (int i = 0; i < iArrayLen; ++i)
{
strItem = str.Substring(i * 3, 3);
bItem = byte.Parse(strItem);
theResult[i] = bItem;
}
return theResult;
}
/// <summary>
///
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
private string ByteArrayStringToString(string str)
{
byte[] bArray = StringToByteArray(str);
return Encoding.Default.GetString(bArray);
}
/// <summary>
///
/// </summary>
/// <param name="str"></param>
/// <param name="_encoding"></param>
/// <returns></returns>
private string ByteArrayStringToString(string str, System.Text.Encoding _encoding)
{
if (_encoding == null)
{
MethodBase methodBaseValue = MethodBase.GetCurrentMethod();
throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> Encoding _encoding 为空。");
}
byte[] bArray = StringToByteArray(str);
return _encoding.GetString(bArray);
}
/// <summary>
/// 加密字符串成为byte[]数组
/// </summary>
/// <param name="str"></param>
/// <param name="key"></param>
/// <returns></returns>
private byte[] XorEncryptToByteArray(string str, string key)
{
return XorEncryptToByteArray(str, key, Encoding.Default);
}
/// <summary>
/// 加密字符串成为byte[]数组
/// </summary>
/// <param name="str"></param>
/// <param name="key"></param>
/// <param name="_encoding"></param>
/// <returns></returns>
private byte[] XorEncryptToByteArray(string str, string key, System.Text.Encoding _encoding)
{
if (str == null || str.Length == 0)
return null;
if (_encoding == null)
{
MethodBase methodBaseValue = MethodBase.GetCurrentMethod();
throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> Encoding _encoding 为空。");
}
if (key == null || key.Length == 0)
{
MethodBase methodBaseValue = MethodBase.GetCurrentMethod();
throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> string key 为空。");
}
byte[] byteText = _encoding.GetBytes(str);
byte[] byteKey = _encoding.GetBytes(key);
int iByteTextLen = byteText.Length;
int iByteKeyLen = byteKey.Length;
if (iByteKeyLen == 0)
{
MethodBase methodBaseValue = MethodBase.GetCurrentMethod();
throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> " + "加密密钥key长度为0。");
}
for (int i = 0; i < iByteTextLen; ++i)
{
byteText[i] = (byte)(byteText[i] ^ byteKey[i % iByteKeyLen]);
}
return byteText;
}
/// <summary>
/// 加密字符串成为byte[]数组
/// </summary>
/// <param name="str"></param>
/// <param name="key"></param>
/// <returns></returns>
private string XorEncryptToByteArrayString(string str, string key)
{
return XorEncryptToByteArrayString(str, key, Encoding.Default);
}
/// <summary>
/// 加密字符串成为byte[]数组
/// </summary>
/// <param name="str"></param>
/// <param name="key"></param>
/// <param name="_encoding"></param>
/// <returns></returns>
private string XorEncryptToByteArrayString(string str, string key, System.Text.Encoding _encoding)
{
if (str == null || str.Length == 0)
return null;
if (_encoding == null)
{
MethodBase methodBaseValue = MethodBase.GetCurrentMethod();
throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> Encoding _encoding 为空。");
}
if (key == null || key.Length == 0)
{
MethodBase methodBaseValue = MethodBase.GetCurrentMethod();
throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> string key 为空。");
}
byte[] byteText = _encoding.GetBytes(str);
byte[] byteKey = _encoding.GetBytes(key);
int iByteTextLen = byteText.Length;
int iByteKeyLen = byteKey.Length;
if (iByteKeyLen == 0)
{
MethodBase methodBaseValue = MethodBase.GetCurrentMethod();
throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> " + "加密密钥key长度为0。");
}
for (int i = 0; i < iByteTextLen; ++i)
{
byteText[i] = (byte)(byteText[i] ^ byteKey[i % iByteKeyLen]);
}
return _encoding.GetString(byteText);
}
/// <summary>
/// 加密字符串成为String
/// </summary>
/// <param name="str"></param>
/// <param name="key"></param>
/// <returns></returns>
private string XorEncryptToString(string str, string key)
{
return XorEncryptToString(str, key, Encoding.Default);
}
/// <summary>
/// 加密字符串成为String
/// </summary>
/// <param name="str"></param>
/// <param name="key"></param>
/// <param name="_encoding"></param>
/// <returns></returns>
private string XorEncryptToString(string str, string key, System.Text.Encoding _encoding)
{
Byte[] byteText = XorEncryptToByteArray(str, key, _encoding);
return ByteArrayToString(byteText);
}
/// <summary>
/// 解密字符串
/// </summary>
/// <param name="str"></param>
/// <param name="key"></param>
/// <returns></returns>
private byte[] XorDecryptToByteArray(string str, string key)
{
return XorDecryptToByteArray(str, key, Encoding.Default);
}
/// <summary>
/// 解密字符串
/// </summary>
/// <param name="str"></param>
/// <param name="key"></param>
/// <param name="_encoding"></param>
/// <returns></returns>
private byte[] XorDecryptToByteArray(string str, string key, System.Text.Encoding _encoding)
{
if (str == null || str.Length == 0)
return null;
if (_encoding == null)
{
MethodBase methodBaseValue = MethodBase.GetCurrentMethod();
throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> Encoding _encoding 为空。");
}
if (key == null || key.Length == 0)
{
MethodBase methodBaseValue = MethodBase.GetCurrentMethod();
throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> string key 为空。");
}
Byte[] byteText = StringToByteArray(str);
byte[] byteKey = _encoding.GetBytes(key);
int iByteTextLen = byteText.Length;
int iByteKeyLen = byteKey.Length;
if (iByteKeyLen == 0)
{
MethodBase methodBaseValue = MethodBase.GetCurrentMethod();
throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> " + "加密密钥key长度为0。");
}
for (int i = 0; i < iByteTextLen; ++i)
{
byteText[i] = (byte)(byteText[i] ^ byteKey[i % iByteKeyLen]);
}
return byteText;
}
/// <summary>
/// 解密字符串
/// </summary>
/// <param name="str"></param>
/// <param name="key"></param>
/// <returns></returns>
private string XorDecryptToString(string str, string key)
{
return XorDecryptToString(str, key, Encoding.Default);
}
/// <summary>
/// 解密字符串
/// </summary>
/// <param name="str"></param>
/// <param name="key"></param>
/// <param name="_encoding"></param>
/// <returns></returns>
private string XorDecryptToString(string str, string key, System.Text.Encoding _encoding)
{
Byte[] byteText = XorDecryptToByteArray(str, key, _encoding);
string theResult = _encoding.GetString(byteText);
return theResult;
}
/// <summary>
/// 解密字符串
/// </summary>
/// <param name="str"></param>
/// <param name="key"></param>
/// <returns></returns>
private string XorDecryptToByteArrayString
(
string str,
string key
)
{
return XorDecryptToByteArrayString(str, key, Encoding.Default);
}
/// <summary>
/// 解密字符串
/// </summary>
/// <param name="str"></param>
/// <param name="key"></param>
/// <param name="_encoding"></param>
/// <returns></returns>
private string XorDecryptToByteArrayString
(
string str,
string key,
System.Text.Encoding _encoding
)
{
if (str == null || str.Length == 0)
return null;
if (_encoding == null)
{
MethodBase methodBaseValue = MethodBase.GetCurrentMethod();
throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> Encoding _encoding 为空。");
}
if (key == null || key.Length == 0)
{
MethodBase methodBaseValue = MethodBase.GetCurrentMethod();
throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> string key 为空。");
}
Byte[] byteText = StringToByteArray(str);
byte[] byteKey = _encoding.GetBytes(key);
int iByteTextLen = byteText.Length;
int iByteKeyLen = byteKey.Length;
if (iByteKeyLen == 0)
{
MethodBase methodBaseValue = MethodBase.GetCurrentMethod();
throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> " + "加密密钥key长度为0。");
}
for (int i = 0; i < iByteTextLen; ++i)
{
byteText[i] = (byte)(byteText[i] ^ byteKey[i % iByteKeyLen]);
}
return _encoding.GetString(byteText);
}
#endregion 异或加密和解密
-
#region DES3 加密和解密
#region DES 加密
/// <summary>
/// DES 加密
/// </summary>
/// <param name="EncryptKey"></param>
/// <param name="str">明文</param>
/// <param name="_encoding"></param>
/// <returns></returns>
private string DES3Encrypt
(
string EncryptKey,
string str,
System.Text.Encoding _encoding
)
{
string theResult = "";
TripleDESCryptoServiceProvider DES = null;
ICryptoTransform desEncryptValue = null;
try
{
DES = new TripleDESCryptoServiceProvider();
DES.Key = _encoding.GetBytes(EncryptKey);
DES.Mode = CipherMode.ECB;
desEncryptValue = DES.CreateEncryptor();
byte[] Buffer = _encoding.GetBytes(str);
theResult = Convert.ToBase64String(desEncryptValue.TransformFinalBlock(Buffer, 0, Buffer.Length));
}
catch (Exception err)
{
throw err;
}
finally
{
if (desEncryptValue != null)
{
desEncryptValue.Dispose();
desEncryptValue = null;
}
if (DES != null)
{
DES = null;
}
}
return theResult;
}
#endregion DES 加密
#region DES 解密
/// <summary>
/// DES 解密
/// </summary>
/// <param name="EncryptKey"></param>
/// <param name="str"></param>
/// <param name="_encoding"></param>
/// <returns></returns>
private string DES3Decrypt
(
string EncryptKey,
string str,
System.Text.Encoding _encoding
)
{
string theResult = "";
TripleDESCryptoServiceProvider DES = null;
ICryptoTransform desDecryptValue = null;
try
{
DES = new TripleDESCryptoServiceProvider();
DES.Key = _encoding.GetBytes(EncryptKey);
DES.Mode = CipherMode.ECB;
desDecryptValue = DES.CreateDecryptor();
byte[] Buffer = Convert.FromBase64String(str);
theResult = _encoding.GetString(desDecryptValue.TransformFinalBlock(Buffer, 0, Buffer.Length));
}
catch (Exception err)
{
throw err;
}
finally
{
if (desDecryptValue != null)
{
desDecryptValue.Dispose();
desDecryptValue = null;
}
if (DES != null)
{
DES = null;
}
}
return theResult;
}
#endregion DES 解密
#endregion DES3 加密和解密
-
#region 获得GB2312编码的MD5值
/// <summary>
/// 获得GB2312编码的MD5值
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
private string GetGB2312MD5(string s)
{
if (s == null)
s = "";
MD5 md5 = new MD5CryptoServiceProvider();
byte[] t = md5.ComputeHash(System.Text.Encoding.GetEncoding("GB2312").GetBytes(s));
StringBuilder sb = new StringBuilder(32);
for (int i = 0; i < t.Length; i++)
{
sb.Append(t[i].ToString("x").PadLeft(2, '0'));
}
return sb.ToString();
}
/// <summary>
/// 获得MD5值
/// </summary>
/// <param name="s"></param>
/// <param name="en"></param>
/// <returns></returns>
private string GetMD5(string s,System.Text.Encoding en)
{
if (s == null)
s = "";
MD5 md5 = new MD5CryptoServiceProvider();
byte[] t = md5.ComputeHash
(
en.GetBytes(s)
);
StringBuilder sb = new StringBuilder(32);
for (int i = 0; i < t.Length; i++)
{
sb.Append(t[i].ToString("x").PadLeft(2, '0'));
}
return sb.ToString();
}
#endregion 获得GB2312编码的MD5值
-
/// <summary>
/// 数据库链接
/// </summary>
private DBConnectionItem m_dbConnectionItemValue = null;
/// <summary>
/// 数据库链接
/// </summary>
protected Dictionary<int, DBConnectionItem> m_dictionaryDBConnectionItemValue = null;
/// <summary>
/// 获得默认的数据库链接串
/// </summary>
/// <returns></returns>
public DBConnectionItem GetDBConnectionItem()
{
return m_dbConnectionItemValue;
}
/// <summary>
/// 获得默认的数据库链接串
/// </summary>
/// <returns></returns>
public DBConnectionItem GetDBConnectionItem(int idx)
{
if (m_dictionaryDBConnectionItemValue == null)
return null;
if (m_dictionaryDBConnectionItemValue.ContainsKey(idx))
return m_dictionaryDBConnectionItemValue[idx];
return null;
}
/// <summary>
/// 获得默认的数据库链接串
/// </summary>
/// <returns></returns>
public string GetDBConnectionString()
{
return GetDBConnectionItem().dbConnectionString;
}
/// <summary>
/// 获得默认的数据库链接串
/// </summary>
/// <returns></returns>
public SlowX.DAL.Enums.DataBaseHelper.EmDataBaseHelper GetEmDataBaseHelper()
{
return GetDBConnectionItem().emDataBaseHelperValue;
}
/// <summary>
/// 获得默认的数据库版本
/// </summary>
/// <returns></returns>
public int GetDataBaseVersion()
{
return GetDBConnectionItem().dataBaseVersion;
}
-
<!-- 数据库相关的配置(后续需要改正,有点小错误) -->
<!-- 数据库连接串 -->
<!-- slowxdb -->
<add key="SlowX.DAL.DBConnectionString" value="data source=xxxx;Initial Catalog=slowxwebdb;User ID=xxx;pwd=xxxx;" />
<add key="SlowX.DAL.DBConnectionString1" value="server=xxxxxx;database=SlowXWebDB;user id=xxxx;pwd={0};" />
<!-- 数据库类型:Oracle:1/SqlServer:2 -->
<add key="SlowX.DAL.Enums.DataBaseHelper.EmDataBaseHelper" value="2" />
<!-- 数据库版本类型(区别SQLServer2000和SQLServer2005+) -->
<add key="SlowX.DAL.Enums.DataBaseVersion" value="1" />
<!-- 数据库的密码配置 -->
<!-- 加密方式:明文:1/异或:2/DES3:3 -->
<add key="SlowX.DAL.EmDbConnStringEncrypt" value="3" />
<!-- 密码 -->
<add key="SlowX.DAL.DBConnectionStringPwd" value="" />
<!-- 加密密码 -->
<add key="SlowX.DAL.DBConnectionStringPwdEnKey" value="www.slowx.net" />
<!-- 数据库的密码配置End -->
<!-- 实现多个DB切换的KEY -->
<add key="SlowX.DAL.DBConnectionStringKey" value="1" />
<!-- 数据库相关的配置End -->