zoukankan      html  css  js  c++  java
  • [恶心]数据库连接串加密

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data.Common;
    
    namespace System.Data
    {
        /// <summary>
        /// MultipleActiveResultSets=True;
        /// </summary>
        [Serializable]
        public sealed class ConnectionStringBuilder : DbConnectionStringBuilder
        {
            #region Properties
            public bool IsEncrypt
            {
                get { return base.ContainsKey("KEY"); }
            }
            public string[] CryptoKeys
            {
                set
                {
                    if (value.Length < 2)
                    {
                        throw new ArgumentException("value.Length < 2");
                    }
                    base["KEY"] = string.Join(DbUtility.Separator, value);
                }
                get
                {
                    object value;
                    if (base.TryGetValue("KEY", out value))
                    {
                        string[] args = value.ToString().Split(DbUtility.Separator[0]);
                        if (args.Length >= 2)
                        {
                            return args;
                        }
                    }
                    return new string[2];
                }
            }
            #endregion
    
            #region Methods
            public ConnectionStringBuilder()
            {
    
            }
            public ConnectionStringBuilder(string connectionString)
            {
                base.ConnectionString = connectionString;
            }
    
            internal string GetDecrypt()
            {
                if (this.IsEncrypt)
                {
                    string[] args = this.CryptoKeys;
                    using (CryptoManaged coder = new CryptoManaged(args[0], args[1]))
                    {
                        return coder.Decrypt(base["ENTITY"].ToString());
                    }
                }
                return base.ConnectionString;
            }
            public override string ToString()
            {
                if (this.IsEncrypt)
                {
                    string[] args = this.CryptoKeys;
                    using (CryptoManaged coder = new CryptoManaged(args[0], args[1]))
                    {
                        base.Remove("KEY");
                        string oldString = base.ConnectionString;
                        base.Clear();
                        base["ENTITY"] = coder.Encrypt(oldString);
                        this.CryptoKeys = args;
                        string newString = base.ToString().Replace(""", string.Empty);
                        base.ConnectionString = oldString;
                        this.CryptoKeys = args;
                        return newString;
                    }
                }
                return base.ToString();
            }
            #endregion
        }
    }
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace Rocky.App
    {
        public partial class ConnectionStringForm : Form
        {
            private ConnectionStringBuilder builder;
    
            public ConnectionStringForm()
            {
                InitializeComponent();
            }
    
            private void ConnectionStringForm_Load(object sender, EventArgs e)
            {
                builder = new ConnectionStringBuilder();
            }
    
            private void textBox1_Enter(object sender, EventArgs e)
            {
                if (Clipboard.ContainsText())
                {
                    textBox1.Text = Clipboard.GetText();
                }
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                builder.ConnectionString = textBox1.Text;
                builder.CryptoKeys = new string[] { CryptoManaged.MD5Hex("Rocky.TBox"), CryptoManaged.NewSalt };
                textBox2.Text = builder.ToString();
            }
        }
    }
    View Code
      <connectionStrings>
        <add name="access" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|#xfjob.mdb" providerName="System.Data.OleDb"/>
      </connectionStrings>
    View Code
  • 相关阅读:
    U盘为什么还有剩余空间,但却提示说空间不够
    U盘安装系统
    win8 64位+Oracle 11g 64位下使用PL/SQL Developer 的解决办法
    Oracle 去掉重复字符串
    ORACLE获取字符串中数字部分
    MyBatis中的大于、小于、like等符号写法
    Oracle计算时间差函数
    HDU 3569 Imaginary Date 简单期望
    C语言之——文件操作模式
    LeetCode OJ 之 Ugly Number II (丑数-二)
  • 原文地址:https://www.cnblogs.com/Googler/p/3215152.html
Copyright © 2011-2022 走看看