a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C# > 正文

C# 數據庫鏈接字符串加密解密工具代碼詳解

2019-10-29 21:02:18
字體:
來源:轉載
供稿:網友

有些項目尤其是WinForm或者是WPF項目,針對一些工具形式的小項目,不想軟件流出去之后,懂程序的的拿到手之后一看配置文件就知道了我們數據庫的用戶名和密碼,如果外網能訪問的話,那就麻煩大了。所以這里為了防止項目外泄之后這些信息不被別人看到,我們就需要對鏈接字符串或者其他重要信息進行加密,用的時候在解密。

思路:使用兩個數對連接字符串進行加密,再用這兩個數進行解密。

<add key="ConfigString" value="4HsXBRNXTkeN0ZoKdEwFE501TKSqLZUyJ0Zf+C7s5+gPd1SbWBiuh4PG6jeFgcnCTFr0QFW8FN40m/S8xmQq+8srL8taMLO23z6GSmaQJoM="/>

c#,數據庫,鏈接,字符串,加解密工具

直接上代碼:

1:定義一個初始化源數據的類。

public class ConfigInformation {  private static ConfigInformation _configInformation;  public ConfigInformation Instance  {   get   {    if (_configInformation == null)    {     _configInformation = new ConfigInformation();    }    return _configInformation;   }  }  // 數據庫鏈接字符串加解密 Key Value  public static String Key = "27e167e9-2660-4bc1-bea0-c8781a9f01cb";  public static String Vector = "8280d587-f9bf-4127-bbfa-5e0b4b672958"; }

2:加解密方法:

/// <summary> /// 加密 解密 /// </summary> public class DecryptAndEncryptionHelper {  private readonly SymmetricAlgorithm _symmetricAlgorithm;  private const String DefKey = "qazwsxedcrfvtgb!@#$%^&*(tgbrfvedcwsxqaz)(*&^%$#@!";  private String _key = "";  public String Key  {   get { return _key; }   set   {    if (!String.IsNullOrEmpty(value))    {     _key = value;    }    else    {     _key = DefKey;    }   }  }  private const String DefIV = "tgbrfvedcwsxqaz)(*&^%$#@!qazwsxedcrfvtgb!@#$%^&*(";  private String _iv = "";  public String IV  {   get { return _iv; }   set   {    if (!String.IsNullOrEmpty(value))    {     _iv = value;    }    else    {     _iv = DefIV;    }   }  }  public DecryptAndEncryptionHelper()  {   _symmetricAlgorithm = new RijndaelManaged();  }  public DecryptAndEncryptionHelper(String Key, String IV)  {   _symmetricAlgorithm = new RijndaelManaged();   _key = String.IsNullOrEmpty(Key) ? DefKey : Key;   _iv = String.IsNullOrEmpty(IV) ? DefIV : IV;  }  /// <summary>  /// Get Key  /// </summary>  /// <returns>密鑰</returns>  private byte[] GetLegalKey()  {   _symmetricAlgorithm.GenerateKey();   byte[] bytTemp = _symmetricAlgorithm.Key;   int KeyLength = bytTemp.Length;   if (_key.Length > KeyLength)    _key = _key.Substring(0, KeyLength);   else if (_key.Length < KeyLength)    _key = _key.PadRight(KeyLength, '#');   return ASCIIEncoding.ASCII.GetBytes(_key);  }  /// <summary>  /// Get IV  /// </summary>  private byte[] GetLegalIV()  {   _symmetricAlgorithm.GenerateIV();   byte[] bytTemp = _symmetricAlgorithm.IV;   int IVLength = bytTemp.Length;   if (_iv.Length > IVLength)    _iv = _iv.Substring(0, IVLength);   else if (_iv.Length < IVLength)    _iv = _iv.PadRight(IVLength, '#');   return ASCIIEncoding.ASCII.GetBytes(_iv);  }  /// <summary>  /// Encrypto 加密  /// </summary>  public string Encrypto(string Source)  {   byte[] bytIn = UTF8Encoding.UTF8.GetBytes(Source);   MemoryStream ms = new MemoryStream();   _symmetricAlgorithm.Key = GetLegalKey();   _symmetricAlgorithm.IV = GetLegalIV();   ICryptoTransform encrypto = _symmetricAlgorithm.CreateEncryptor();   CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);   cs.Write(bytIn, 0, bytIn.Length);   cs.FlushFinalBlock();   ms.Close();   byte[] bytOut = ms.ToArray();   return Convert.ToBase64String(bytOut);  }  /// <summary>  /// Decrypto 解密  /// </summary>  public string Decrypto(string Source)  {   byte[] bytIn = Convert.FromBase64String(Source);   MemoryStream ms = new MemoryStream(bytIn, 0, bytIn.Length);   _symmetricAlgorithm.Key = GetLegalKey();   _symmetricAlgorithm.IV = GetLegalIV();   ICryptoTransform encrypto = _symmetricAlgorithm.CreateDecryptor();   CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);   StreamReader sr = new StreamReader(cs);   return sr.ReadToEnd();  } }

3:使用

// 獲取加密的鏈接字符串,然后解密string enString = ConfigurationManager.AppSettings["ConfigString"];DecryptAndEncryptionHelper helper = new DecryptAndEncryptionHelper(ConfigInformation.Key, ConfigInformation.Vector);// 明文var configStr = helper.Decrypto(enString); return configStr;

這樣至少保證了數據的不外泄。

注意:這個加密和解密的算法方法,應該放在服務器。通過請求加解密方法。不應該放在本地代碼里,技術牛的的人,把你的項目反編譯一樣可以看到源代碼。

c#,數據庫,鏈接,字符串,加解密工具

c#,數據庫,鏈接,字符串,加解密工具

 我們在把加密源數據找出來。

c#,數據庫,鏈接,字符串,加解密工具

所以這個加解密代碼不能寫在本地,必須部署到安全的服務器上。

總結

以上所述是小編給大家介紹的C# 數據庫鏈接字符串加密解密工具代碼詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日批视频 | 日韩av免费在线观看 | 欧美久久视频 | 中文字幕精品一区久久久久 | 国产成a | 国产一区精品视频 | 国产在线一 | 国产成人精品免高潮在线观看 | 亚洲女人天堂网 | 中文字幕免费在线 | 黄色的网站在线 | 成人在线 | 国产一区二区三区免费 | 成人一级片在线观看 | 亚洲视频区 | 在线播放国产视频 | 精品中文字幕一区二区 | 看a网址 | 中国女人黄色大片 | 久久精品一区二区三区四区 | 国内自拍偷拍视频 | 欧美区在线观看 | 国产不卡一区在线观看 | 久久精品日产高清版的功能介绍 | 精品1区 | 不卡的av在线播放 | 成人影院网站ww555久久精品 | 国产精品福利在线观看 | 日韩成人在线播放 | 欧美三级电影在线观看 | 亚洲自拍一二三区 | 国产欧美一区二区精品婷 | 国产伦理片在线免费观看 | 欧美性猛交久久久乱大交小说 | 日本免费一区二区三区视频 | 午夜在线一区 | 蜜臀99久久精品久久久久久软件 | 日韩毛片网| 亚洲毛片在线 | 97视频精品 | 伊人免费视频 |