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
  • 相关阅读:
    方法的重载理解
    JAVA 三种循环的总结
    模拟时间倒计时
    制作漂浮广告效果
    js+css+html实现抽奖小程序
    将系统时间转换为汉字表示的四种方法
    简单的导航栏
    模仿光标闪烁,光标移动,自动切换背景
    sublime插件emmet安装和使用
    现在有一张半径为r的圆桌,其中心位于(x,y),现在他想把圆桌的中心移到(x1,y1)。每次移动一步,都必须在圆桌边缘固定一个点然后将圆桌绕这个点旋转。问最少需要移动几步。
  • 原文地址:https://www.cnblogs.com/Googler/p/3215152.html
Copyright © 2011-2022 走看看