DBConnectionDriver - 数据库链接串的获取

2017-02-21 22:53:02  访问(1408) 赞(0) 踩(0)

  • 
            /// <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 -->
    

标签:DBConnectionDriver - 数据库链接串的获取 

上一条:

下一条:


 

相关评论

评论加载中……
 

发表评论

类型:
内容:
  (Alt+Enter)
 
  ┈全部┈  
 
(显示默认分类)