国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C#加密類

2019-11-17 02:11:09
字體:
來源:轉載
供稿:網友

C#加密類

             var es= EncryptSugar.GetInstance();             string Word = "abc";             var wordEncrypt = es.Encrypto(word);//加密             var wordDecrypt = es.Decrypto(wordEncrypt);//解密             var wordmd5 = es.MD5(word);//md5加密

  

using System;using System.Collections.Generic;using System.Text;using System.Security.Cryptography;using System.xml;using System.IO;using System.Linq;namespace SyntacticSugar{    /// <summary>    /// ** 描述:加密類    /// ** 創始時間:2015-6-30    /// ** 修改時間:-    /// ** 作者:sunkaixuan    /// ** 使用說明:http://m.survivalescaperooms.com/sunkaixuan/p/4610729.html    /// </summary>    public class EncryptSugar    {        PRivate static readonly object _instanceLock = new object();        private static EncryptSugar _instance = null;        private static SymmetricAlgorithm mobjCryptoService;        private static string _key;        private static readonly object _cacheLock = new object();        private static Dictionary<string, string> _cache = new Dictionary<string, string>();        /// <summary>        /// 最大緩存條數        /// </summary>        private static int _maxCacheNum = 10000;        /// <summary>        /// 對稱加密類的構造函數        /// </summary>        public static EncryptSugar GetInstance()        {            if (_instance == null)            {                lock (_instanceLock)                {                    if (_instance == null)                    {                        mobjCryptoService = new RijndaelManaged();                        _key = "Guz(%&as1213^^d(fa%(HilJ$lhj!y6&(*jkP87jH7";                        _instance = new EncryptSugar();                    }                }            }            return _instance;        }        /// <summary>        /// 加密方法        /// </summary>        /// <param name="Source">待加密的串</param>        /// <returns>經過加密的串</returns>        public string Encrypto(string source)        {            if (_cache.ContainsKey(source))            {                return _cache[source];            }            byte[] bytIn = UTF8Encoding.UTF8.GetBytes(source);            MemoryStream ms = new MemoryStream();            mobjCryptoService.Key = GetLegalKey();            mobjCryptoService.IV = GetLegalIV();            ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor();            CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);            cs.Write(bytIn, 0, bytIn.Length);            cs.FlushFinalBlock();            ms.Close();            byte[] bytOut = ms.ToArray();            string reval = Convert.ToBase64String(bytOut);            lock (_cacheLock)            {                if (_cache.Count > _maxCacheNum)                {                    foreach (var it in _cache.Take(_maxCacheNum/5))                    {                        _cache.Remove(it.Key);                    }                }                _cache.Add(source, reval);            }            return reval; ;        }        /// <summary>        /// 解密方法        /// </summary>        /// <param name="Source">待解密的串</param>        /// <returns>經過解密的串</returns>        public string Decrypto(string source)        {            lock (_cacheLock)            {                if (_cache.Any(it => it.Value == source))                {                    return _cache.Single(it => it.Value == source).Key;                }            }            byte[] bytIn = Convert.FromBase64String(source);            MemoryStream ms = new MemoryStream(bytIn, 0, bytIn.Length);            mobjCryptoService.Key = GetLegalKey();            mobjCryptoService.IV = GetLegalIV();            ICryptoTransform encrypto = mobjCryptoService.CreateDecryptor();            CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);            StreamReader sr = new StreamReader(cs);            return sr.ReadToEnd();        }        /// <summary>        /// MD5加密,不可逆        /// </summary>        /// <param name="source"></param>        /// <returns></returns>        public string MD5(string source)        {            return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(source, "MD5");        }        #region 私有函數        /// <summary>        /// 獲得密鑰        /// </summary>        /// <returns>密鑰</returns>        private byte[] GetLegalKey()        {            string sTemp = _key;            mobjCryptoService.GenerateKey();            byte[] bytTemp = mobjCryptoService.Key;            int KeyLength = bytTemp.Length;            if (sTemp.Length > KeyLength)                sTemp = sTemp.Substring(0, KeyLength);            else if (sTemp.Length < KeyLength)                sTemp = sTemp.PadRight(KeyLength, ' ');            return ASCIIEncoding.ASCII.GetBytes(sTemp);        }        /// <summary>        /// 獲得初始向量IV        /// </summary>        /// <returns>初試向量IV</returns>        private byte[] GetLegalIV()        {            string sTemp = "asdfas&&dfg*$#+)*Y41sdgsdgs&*%$$$^&&GGslsadKdfK1";            mobjCryptoService.GenerateIV();            byte[] bytTemp = mobjCryptoService.IV;            int IVLength = bytTemp.Length;            if (sTemp.Length > IVLength)                sTemp = sTemp.Substring(0, IVLength);            else if (sTemp.Length < IVLength)                sTemp = sTemp.PadRight(IVLength, ' ');            return ASCIIEncoding.ASCII.GetBytes(sTemp);        }        #endregion    }}

  


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临漳县| 凌海市| 平昌县| 天峻县| 阜平县| 定日县| 启东市| 皋兰县| 石屏县| 拉孜县| 桓仁| 台中市| 玉溪市| 靖西县| 天镇县| 灌阳县| 永福县| 龙口市| 嘉荫县| 曲麻莱县| 登封市| 中西区| 涟水县| 湖州市| 清丰县| 张掖市| 绥芬河市| 平舆县| 大关县| 滕州市| 吴川市| 白朗县| 新宁县| 年辖:市辖区| 民勤县| 嵊州市| 吉首市| 泾阳县| 仪陇县| 泸定县| 惠水县|