<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
        主站蜘蛛池模板: 国产曰批免费视频播放免费s| 国产精品免费视频观看拍拍| 99视频免费在线观看| 亚洲成a人片在线观看久| 久久精品亚洲日本波多野结衣| 一二三四视频在线观看中文版免费| 亚洲国产午夜电影在线入口| 久草免费在线观看视频| 亚洲一区二区三区不卡在线播放| 精品免费久久久久久久| 国产成人精品日本亚洲11| 成人看的午夜免费毛片| 国产亚洲精品仙踪林在线播放| 日韩中文字幕在线免费观看| 看Aⅴ免费毛片手机播放| www.亚洲精品.com| 中文字幕视频在线免费观看| 亚洲AV无码一区二区二三区入口| 人妻丰满熟妇无码区免费| 亚洲大香伊人蕉在人依线| 免费的一级片网站| 人妻18毛片a级毛片免费看| 亚洲综合色自拍一区| 最近2019免费中文字幕视频三| 亚洲国产成人资源在线软件| 在线观看视频免费国语| 一级成人a免费视频| 久久久久亚洲AV无码网站| 国产va精品免费观看| 一个人免费观看日本www视频| 亚洲阿v天堂在线| 欧洲精品成人免费视频在线观看 | 精品视频免费在线| 久久久久噜噜噜亚洲熟女综合| 久久青草免费91观看| 亚洲不卡影院午夜在线观看| 亚洲国产av无码精品| 182tv免费视视频线路一二三 | 亚洲成a人一区二区三区| 无码人妻AV免费一区二区三区| 亚洲深深色噜噜狠狠网站|