<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

        ASP.NET加密解密算法分享

        來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:38:36
        文檔

        ASP.NET加密解密算法分享

        ASP.NET加密解密算法分享: #region DES加密解密 /// <summary> /// DES加密 /// </summary> /// <param name=strSource>待加密字串</param> /// <param name=key>32位Key值</param> //
        推薦度:
        導(dǎo)讀ASP.NET加密解密算法分享: #region DES加密解密 /// <summary> /// DES加密 /// </summary> /// <param name=strSource>待加密字串</param> /// <param name=key>32位Key值</param> //

        #region DES加密解密
         /// <summary>
         /// DES加密
         /// </summary>
         /// <param name="strSource">待加密字串</param>
         /// <param name="key">32位Key值</param>
         /// <returns>加密后的字符串</returns>
         public string DESEncrypt(string strSource)
         {
         return DESEncrypt(strSource, DESKey);
         }
         public string DESEncrypt(string strSource, byte[] key)
         {
         SymmetricAlgorithm sa = Rijndael.Create();
         sa.Key = key;
         sa.Mode = CipherMode.ECB;
         sa.Padding = PaddingMode.Zeros;
         MemoryStream ms = new MemoryStream();
         CryptoStream cs = new CryptoStream(ms, sa.CreateEncryptor(), CryptoStreamMode.Write);
         byte[] byt = Encoding.Unicode.GetBytes(strSource);
         cs.Write(byt, 0, byt.Length);
         cs.FlushFinalBlock();
         cs.Close();
         return Convert.ToBase64String(ms.ToArray());
         }
         /// <summary>
         /// DES解密
         /// </summary>
         /// <param name="strSource">待解密的字串</param>
         /// <param name="key">32位Key值</param>
         /// <returns>解密后的字符串</returns>
         public string DESDecrypt(string strSource)
         {
         return DESDecrypt(strSource, DESKey);
         }
         public string DESDecrypt(string strSource, byte[] key)
         {
         SymmetricAlgorithm sa = Rijndael.Create();
         sa.Key = key;
         sa.Mode = CipherMode.ECB;
         sa.Padding = PaddingMode.Zeros;
         ICryptoTransform ct = sa.CreateDecryptor();
         byte[] byt = Convert.FromBase64String(strSource);
         MemoryStream ms = new MemoryStream(byt);
         CryptoStream cs = new CryptoStream(ms, ct, CryptoStreamMode.Read);
         StreamReader sr = new StreamReader(cs, Encoding.Unicode);
         return sr.ReadToEnd();
         }
         #endregion
         #region 一個(gè)用hash實(shí)現(xiàn)的加密解密方法
         /// <summary>
         /// 加密
         /// </summary>
         /// <param name="src"></param>
         /// <returns></returns>
         public static string EncryptStrByHash(string src)
         {
         if (src.Length == 0)
         {
         return "";
         }
         byte[] HaKey = System.Text.Encoding.ASCII.GetBytes((src + "Test").ToCharArray());
         byte[] HaData = new byte[20];
         HMACSHA1 Hmac = new HMACSHA1(HaKey);
         CryptoStream cs = new CryptoStream(Stream.Null, Hmac, CryptoStreamMode.Write);
         try
         {
         cs.Write(HaData, 0, HaData.Length);
         }
         finally
         {
         cs.Close();
         }
         string HaResult = System.Convert.ToBase64String(Hmac.Hash).Substring(0, 16);
         byte[] RiKey = System.Text.Encoding.ASCII.GetBytes(HaResult.ToCharArray());
         byte[] RiDataBuf = System.Text.Encoding.ASCII.GetBytes(src.ToCharArray());
         byte[] EncodedBytes = { };
         MemoryStream ms = new MemoryStream();
         RijndaelManaged rv = new RijndaelManaged();
         cs = new CryptoStream(ms, rv.CreateEncryptor(RiKey, RiKey), CryptoStreamMode.Write);
         try
         {
         cs.Write(RiDataBuf, 0, RiDataBuf.Length);
         cs.FlushFinalBlock();
         EncodedBytes = ms.ToArray();
         }
         finally
         {
         ms.Close();
         cs.Close();
         }
         return HaResult + System.Convert.ToBase64String(EncodedBytes);
         }
         /// <summary>
         /// 解密
         /// </summary>
         /// <param name="src"></param>
         /// <returns></returns>
         public static string DecrypStrByHash(string src)
         {
         if (src.Length < 40) return "";
         byte[] SrcBytes = System.Convert.FromBase64String(src.Substring(16));
         byte[] RiKey = System.Text.Encoding.ASCII.GetBytes(src.Substring(0, 16).ToCharArray());
         byte[] InitialText = new byte[SrcBytes.Length];
         RijndaelManaged rv = new RijndaelManaged();
         MemoryStream ms = new MemoryStream(SrcBytes);
         CryptoStream cs = new CryptoStream(ms, rv.CreateDecryptor(RiKey, RiKey), CryptoStreamMode.Read);
         try
         {
         cs.Read(InitialText, 0, InitialText.Length);
         }
         finally
         {
         ms.Close();
         cs.Close();
         }
         System.Text.StringBuilder Result = new System.Text.StringBuilder();
         for (int i = 0; i < InitialText.Length; ++i) if (InitialText[i] > 0) Result.Append((char)InitialText[i]);
         return Result.ToString();
         }
         /// <summary>
         /// 對加密后的密文重新編碼,如果密文長>16,則去掉前16個(gè)字符,如果長度小于16,返回空字符串
         /// </summary>
         /// <param name="s"></param>
         /// <returns></returns>
         public string ReEncryptStrByHash(string s)
         {
         string e = Encrypt.EncryptStrByHash(s);
         return ((e.Length > 16) ? e.Substring(16) : "");
         }
         #endregion
         #region Md5加密,生成16位或32位,生成的密文都是大寫
         public static string Md5To16(string str)
         {
         MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
         string t2 = BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(str)), 4, 8);
         t2 = t2.Replace("-", "");
         return t2;
         }
         //// <summary>
         /// MD5 32位加密
         /// </summary>
         /// <param name="str"></param>
         /// <returns></returns>
         public static string Md5To32(string str)
         {
         string pwd = "";
         MD5 md5 = MD5.Create();
         byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(str));
         for (int i = 0; i < s.Length; i++)
         {
         pwd = pwd + s[i].ToString("X");
         }
         return pwd;
         }
         #endregion
         #region 3DES加密解密
         public string Encrypt3DES(string str)
         {
         //密鑰
         string sKey = "wyw308";
         // //矢量,可為空
         string sIV = "scf521";
         // //構(gòu)造對稱算法
         SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider();
         ICryptoTransform ct;
         MemoryStream ms;
         CryptoStream cs;
         byte[] byt;
         mCSP.Key = Convert.FromBase64String(sKey);
         mCSP.IV = Convert.FromBase64String(sIV);
         mCSP.Mode = System.Security.Cryptography.CipherMode.ECB;
         mCSP.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
         ct = mCSP.CreateEncryptor(mCSP.Key, mCSP.IV);
         byt = Encoding.UTF8.GetBytes(str);
         ms = new MemoryStream();
         cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
         cs.Write(byt, 0, byt.Length);
         cs.FlushFinalBlock();
         cs.Close();
         return Convert.ToBase64String(ms.ToArray());
         }
         /// <summary>
         /// 帶指定密鑰和矢量的3DES加密
         /// </summary>
         /// <param name="str"></param>
         /// <param name="sKey"></param>
         /// <param name="sIV"></param>
         /// <returns></returns>
         public string Encrypt3DES(string str, string sKey, string sIV)
         {
         SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider();
         ICryptoTransform ct;
         MemoryStream ms;
         CryptoStream cs;
         byte[] byt;
         mCSP.Key = Convert.FromBase64String(sKey);
         mCSP.IV = Convert.FromBase64String(sIV);
         mCSP.Mode = System.Security.Cryptography.CipherMode.ECB;
         mCSP.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
         ct = mCSP.CreateEncryptor(mCSP.Key, mCSP.IV);
         byt = Encoding.UTF8.GetBytes(str);
         ms = new MemoryStream();
         cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
         cs.Write(byt, 0, byt.Length);
         cs.FlushFinalBlock();
         cs.Close();
         return Convert.ToBase64String(ms.ToArray());
         }
         //解密
         public string Decrypt3DES(string Value)
         {
         string sKey = "wyw308";
         string sIV = "scf521";
         SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider();
         ICryptoTransform ct;
         MemoryStream ms;
         CryptoStream cs;
         byte[] byt;
         mCSP.Key = Convert.FromBase64String(sKey);
         mCSP.IV = Convert.FromBase64String(sIV);
         mCSP.Mode = System.Security.Cryptography.CipherMode.ECB;
         mCSP.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
         ct = mCSP.CreateDecryptor(mCSP.Key, mCSP.IV);
         byt = Convert.FromBase64String(Value);
         ms = new MemoryStream();
         cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
         cs.Write(byt, 0, byt.Length);
         cs.FlushFinalBlock();
         cs.Close();
         return Encoding.UTF8.GetString(ms.ToArray());
         }
         /// <summary>
         /// 帶指定密鑰和矢量的3DES解密
         /// </summary>
         /// <param name="Value"></param>
         /// <param name="sKey"></param>
         /// <param name="sIV"></param>
         /// <returns></returns>
         public string Decrypt3DES(string str, string sKey, string sIV)
         {
         SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider();
         ICryptoTransform ct;
         MemoryStream ms;
         CryptoStream cs;
         byte[] byt;
         mCSP.Key = Convert.FromBase64String(sKey);
         mCSP.IV = Convert.FromBase64String(sIV);
         mCSP.Mode = System.Security.Cryptography.CipherMode.ECB;
         mCSP.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
         ct = mCSP.CreateDecryptor(mCSP.Key, mCSP.IV);
         byt = Convert.FromBase64String(str);
         ms = new MemoryStream();
         cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
         cs.Write(byt, 0, byt.Length);
         cs.FlushFinalBlock();
         cs.Close();
         return Encoding.UTF8.GetString(ms.ToArray());
         }
         #endregion
         #region 一個(gè)簡單的加密解密方法,只支持英文
         public static string EnCryptEnStr(string str) //倒序加1加密
         {
         byte[] by = new byte[str.Length];
         for (int i = 0;
         i <= str.Length - 1;
         i++)
         {
         by[i] = (byte)((byte)str[i] + 1);
         }
         str = "";
         for (int i = by.Length - 1;
         i >= 0;
         i--)
         {
         str += ((char)by[i]).ToString();
         }
         return str;
         }
         public static string DeCryptEnStr(string str) //順序減1解碼
         {
         byte[] by = new byte[str.Length];
         for (int i = 0;
         i <= str.Length - 1;
         i++)
         {
         by[i] = (byte)((byte)str[i] - 1);
         }
         str = "";
         for (int i = by.Length - 1;
         i >= 0;
         i--)
         {
         str += ((char)by[i]).ToString();
         }
         return str;
         }
         #endregion
         #region 一個(gè)簡單的加密解密方法,在上一個(gè)的基礎(chǔ)上支持中文
         public static string EnCryptCnStr(string str)
         {
         string htext = ""; // blank text
         for (int i = 0; i < str.Length; i++)
         {
         htext = htext + (char)(str[i] + 10 - 1 * 2);
         }
         return htext;
         }
         public static string DeCryptCnStr(string str)
         {
         string dtext = "";
         for (int i = 0; i < str.Length; i++)
         {
         dtext = dtext + (char)(str[i] - 10 + 1 * 2);
         }
         return dtext;
         }
         #endregion
         #region Url地址編碼解碼
         /// <summary>
         /// 編碼Url地址
         /// </summary>
         /// <param name="url"></param>
         /// <returns></returns>
         public static string UrlEncode(string url)
         {
         byte[] mByte = null;
         mByte = System.Text.Encoding.GetEncoding("GB2312").GetBytes(url);
         return System.Web.HttpUtility.UrlEncode(mByte);
         }
         /// <summary>
         /// 解碼Url地址
         /// </summary>
         /// <param name="url"></param>
         /// <returns></returns>
         public static string UrlDecode(string url)
         {
         return HttpUtility.UrlDecode(url, System.Text.Encoding.GetEncoding("GB2312"));
         }
         #endregion
        

        以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        ASP.NET加密解密算法分享

        ASP.NET加密解密算法分享: #region DES加密解密 /// <summary> /// DES加密 /// </summary> /// <param name=strSource>待加密字串</param> /// <param name=key>32位Key值</param> //
        推薦度:
        標(biāo)簽: 分享 加密 解密
        • 熱門焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国产午夜亚洲精品午夜鲁丝片| 91禁漫免费进入| 欧洲美熟女乱又伦免费视频| 亚洲免费在线视频观看| 免费v片在线观看视频网站| 亚洲码在线中文在线观看| 免费福利在线播放| 亚洲中文字幕久久无码| 午夜色a大片在线观看免费| 精品亚洲成A人在线观看青青| 啦啦啦手机完整免费高清观看| 噜噜综合亚洲AV中文无码| 国产美女精品视频免费观看| 老司机免费午夜精品视频| 亚洲一区二区三区在线视频| aa在线免费观看| 99亚洲精品高清一二区| 青青久在线视频免费观看| 亚洲av无码片vr一区二区三区 | 91在线视频免费91| 亚洲老熟女五十路老熟女bbw| 又黄又爽一线毛片免费观看| 人体大胆做受免费视频| 亚洲AV人无码激艳猛片| 成人网站免费观看| 一个人看的免费视频www在线高清动漫| 亚洲精品无码乱码成人| 日本免费人成在线网站| 国产精品亚洲综合网站| 久久久久亚洲AV片无码| 大地资源二在线观看免费高清| 青娱乐在线免费观看视频| 亚洲AV无码一区二区二三区入口 | 永久免费的网站在线观看| 亚洲国产成人无码AV在线影院| 2022中文字字幕久亚洲| 亚洲三级高清免费| 豆国产96在线|亚洲| 亚洲人成电影亚洲人成9999网| 精品久久久久久久免费人妻 | a级毛片毛片免费观看永久|