<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      安全性之加密算法

      信息安全越來越重要的今天,系統(tǒng)設計和開發(fā)過程當中必要的加密技術必不可少,根據(jù)項目中的實際經(jīng)驗總結一下實際項目中安全使用場景。

      系統(tǒng)內(nèi)部密碼使用md5加密,密碼不可逆,不可使用任何手段讓任何人獲取用戶的密碼,如果安全級別更高一些可以多次md5或混合加密。

      特殊字段的安全保密使用對稱加密算法,常用的有DES/AES,對于當今的計算機發(fā)展速度,DES加密相對已經(jīng)容易被破解,所以推薦使用AES進行加解密。

      .Net的DES加密算法實現(xiàn)

      /// <summary>
              /// 獲取密鑰
              /// </summary>
              private static string Key
              {
                  get { return @"ads{}[]19123456789123456789a},ds"; }
              }
      
              /// <summary>
              /// 獲取向量
              /// </summary>
              private static string IV
              {
                  get { return @"123456789{},';s"; }
              }
      
              /// <summary>
              /// AES加密
              /// </summary>
              /// <param name="plainStr">明文字符串</param>
              /// <returns>密文</returns>
              public static string AESEncrypt(string plainStr)
              {
                  byte[] bKey = Encoding.UTF8.GetBytes(Key);
                  byte[] bIV = Encoding.UTF8.GetBytes(IV);
                  byte[] byteArray = Encoding.UTF8.GetBytes(plainStr);
      
                  string encrypt = null;
                  Rijndael aes = Rijndael.Create();
                  try
                  {
                      using (MemoryStream mStream = new MemoryStream())
                      {
                          using (CryptoStream cStream = new CryptoStream(mStream, aes.CreateEncryptor(bKey, bIV), CryptoStreamMode.Write))
                          {
                              cStream.Write(byteArray, 0, byteArray.Length);
                              cStream.FlushFinalBlock();
                              encrypt = Convert.ToBase64String(mStream.ToArray());
                          }
                      }
                  }
                  catch { }
                  aes.Clear();
      
                  return encrypt;
              }
      
              /// <summary>
              /// AES加密
              /// </summary>
              /// <param name="plainStr">明文字符串</param>
              /// <param name="returnNull">加密失敗時是否返回 null,false 返回 String.Empty</param>
              /// <returns>密文</returns>
              public static string AESEncrypt(string plainStr, bool returnNull)
              {
                  string encrypt = AESEncrypt(plainStr);
                  return returnNull ? encrypt : (encrypt == null ? String.Empty : encrypt);
              }
      
              /// <summary>
              /// AES解密
              /// </summary>
              /// <param name="encryptStr">密文字符串</param>
              /// <returns>明文</returns>
              public static string AESDecrypt(string encryptStr)
              {
                  byte[] bKey = Encoding.UTF8.GetBytes(Key);
                  byte[] bIV = Encoding.UTF8.GetBytes(IV);
                  byte[] byteArray = Convert.FromBase64String(encryptStr);
      
                  string decrypt = null;
                  Rijndael aes = Rijndael.Create();
                  try
                  {
                      using (MemoryStream mStream = new MemoryStream())
                      {
                          using (CryptoStream cStream = new CryptoStream(mStream, aes.CreateDecryptor(bKey, bIV), CryptoStreamMode.Write))
                          {
                              cStream.Write(byteArray, 0, byteArray.Length);
                              cStream.FlushFinalBlock();
                              decrypt = Encoding.UTF8.GetString(mStream.ToArray());
                          }
                      }
                  }
                  catch { }
                  aes.Clear();
      
                  return decrypt;
              }
      
              /// <summary>
              /// AES解密
              /// </summary>
              /// <param name="encryptStr">密文字符串</param>
              /// <param name="returnNull">解密失敗時是否返回 null,false 返回 String.Empty</param>
              /// <returns>明文</returns>
              public static string AESDecrypt(string encryptStr, bool returnNull)
              {
                  string decrypt = AESDecrypt(encryptStr);
                  return returnNull ? decrypt : (decrypt == null ? String.Empty : decrypt);
              }

      非對稱加密.net的實現(xiàn):

      第一步:根據(jù)上面的原理性介紹,我們需要生成公鑰(發(fā)信方需要)和私鑰(收信方需要),實現(xiàn)代碼如下:
      //制造公鑰和私鑰的方法如下:
      RSACryptoServiceProvider crypt = new RSACryptoServiceProvider();
      string  publickey = crypt.ToXmlString(false);//公鑰
      string  privatekey = crypt.ToXmlString(true);//私鑰
      crypt.Clear();
       
      第二步:發(fā)信方使用公鑰對明文進行加密,實現(xiàn)代碼如下:
      StreamReader sr = new StreamReader(Server.MapPath("a.txt"), UTF8Encoding.UTF8);
      string readpublickey = sr.ReadToEnd(); //包含 RSA 密鑰信息的 XML 字符串。
      sr.Close();
      UTF8Encoding enc = new UTF8Encoding();
      byte[] bytes = enc.GetBytes(TextBox1.Text.Trim());
      RSACryptoServiceProvider crypt = new RSACryptoServiceProvider();
      crypt.FromXmlString(readpublickey);
      bytes = crypt.Encrypt(bytes, false);
      string encryttext = Convert.ToBase64String(bytes);
      string abb = Server.UrlEncode(encryttext);
      Response.Write("密文為:" + abb);
       
      第三步:收信方使用私鑰對密文進行解密,實現(xiàn)代碼如下:
      StreamReader sr = new StreamReader(Server.MapPath("b.txt"), UTF8Encoding.UTF8);
      string readprivatekey = sr.ReadToEnd();
      sr.Close();
      RSACryptoServiceProvider crypt = new RSACryptoServiceProvider();
      UTF8Encoding enc = new UTF8Encoding();
      byte[] bytes = Convert.FromBase64String(@Server.UrlDecode(TextBox1.Text.Trim()));
      crypt.FromXmlString(readprivatekey);
      byte[] decryptbyte = crypt.Decrypt(bytes, false);
      string decrypttext = enc.GetString(decryptbyte);
      Response.Write("明文為:" + decrypttext);

      簡單實現(xiàn):

      系統(tǒng)對外的一些接口會顯示一些數(shù)據(jù),為了這些數(shù)據(jù)的安全,接口提供的數(shù)據(jù)進行AES加密,然后客戶端接收后再進行解密操作。如果你還在使用DES加密趕快進行替換吧。

      后續(xù)希望研究并運用:

      1、DDOS的防護技巧

      2、跨站點請求偽造

      3、XSS攻擊

      4、文件上傳漏洞

      5、信息垃圾過濾

      posted @ 2015-01-30 19:27  wxj200589  閱讀(655)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 久久久天堂国产精品女人 | 日韩一区二区三区日韩精品| 亚洲欧美日韩一区在线观看| 国产亚洲一级特黄大片在线 | 久久综合亚洲色一区二区三区| 亚洲成人av在线资源| 国产AV影片麻豆精品传媒| 精品人妻中文字幕在线| 双乳奶水饱满少妇呻吟免费看| 99久久久无码国产精品免费| 蜜芽久久人人超碰爱香蕉| 亚洲中文无码手机永久| 青青草国产线观看| 动漫av网站免费观看| 国产婷婷精品av在线| 国产午夜亚洲精品国产成人| 南京市| 亚洲精品日韩在线观看| 妺妺窝人体色www看美女| av午夜福利亚洲精品福利| 高清国产精品人妻一区二区| 欧美人禽zozo动人物杂交| av在线播放国产一区| 日本中文字幕在线| 毛片网站在线观看| 国产精品高清国产三级囯产AV| 精品人妻少妇一区二区三区在线| 91精品亚洲一区二区三区| 丁香花成人电影| 人成午夜免费视频无码| 国产在线午夜不卡精品影院| 少妇高潮惨叫喷水在线观看| 日本肉体xxxx裸交| 专干老肥熟女视频网站| 蜜桃无码一区二区三区| 国产乱人偷精品人妻a片| 国产精品无遮挡猛进猛出| 99久久国产精品无码| 国产精品亚洲二区在线看| 国产精品久久久久久人妻精品动漫| 国产区成人精品视频|