<th id="v9g6b"><track id="v9g6b"></track></th>

  • <em id="v9g6b"><acronym id="v9g6b"></acronym></em>
    <progress id="v9g6b"><pre id="v9g6b"></pre></progress>
    <tbody id="v9g6b"></tbody>
    <button id="v9g6b"><acronym id="v9g6b"></acronym></button>
    <rp id="v9g6b"><ruby id="v9g6b"></ruby></rp>

        <dd id="v9g6b"></dd>

        <em id="v9g6b"></em>

          软件开发框架密码加密助手类

          在web软件开发框架实施项目里,经常会碰到数据加密的应用场景,比如说登陆、网络传输等,这些场景的面对放在太阳下暴晒的数据我们该怎么办?

          软件开发框架加密

          直接贴源码了,主要是使用md5和3des加解密字符串,字符串再经过base64编码,比较简单。

          /// <summary>
              /// 密码加密助手类
              /// </summary>
              public static class EncrpytHelper
              {
                  //软件开发框架md5加密
                  internal static byte[] GetHash(string key)
                  {
                      using (MD5CryptoServiceProvider hashMD5 = new MD5CryptoServiceProvider())
                      {
                          return hashMD5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(key));
                      }
                  }
                  private static byte[] _DefaultHashKey;
                  internal static byte[] DefaultHashKey
                  {
                      get
                      {
                          if (_DefaultHashKey == null)
                          {
                              _DefaultHashKey = GetHash("!1@2#3$4%5^6");
                          }
                          return _DefaultHashKey;
                      }
                  }
                  /// <summary>
                  /// 预留的二次加密
                  /// </summary>
                  internal static string EncrpytKey
                  {
                      get
                      {
                          return AppConfig.GetApp("EncrpytKey", "");
                      }
                  }
                  #region
                  public static string Encrypt(string text)
                  {
                      string result = Encrypt(text, DefaultHashKey);
                      if (EncrpytKey != "")
                      {
                          result = Encrypt(result, GetHash(EncrpytKey)) + "=2";//设置二级加密标识
                      }
                      return result;
                  }
                  /// <summary>
                  /// 软件开发框架3des加密字符串
                  /// </summary>
                  /// <param name="text">要加密的字符串</param>
                  /// <param name="hashKey">密钥</param>
                  /// <returns>加密后并经base64编码的字符串</returns>
                  /// <remarks>静态方法,采用默认ascii编码</remarks>
                  private static string Encrypt(string text, byte[] hashKey)
                  {
                      string result = string.Empty;
                      using (TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider())
                      {
                          DES.Key = hashKey;
                          DES.Mode = CipherMode.ECB;
                          ICryptoTransform DESEncrypt = DES.CreateEncryptor();
          
                          byte[] Buffer = ASCIIEncoding.UTF8.GetBytes(text);
                          string pass = Convert.ToBase64String(DESEncrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));
                          result = pass.Replace('=', '#');
                      }
          
                      return result;
                  }//end method
          
          
                  /// <summary>
                  /// 软件开发框架3des解密字符串
                  /// </summary>
                  /// <param name="text">要解密的字符串</param>
                  /// <returns>解密后的字符串</returns>
                  /// <exception cref="">密钥错误</exception>
                  /// <remarks>静态方法,采用默认ascii编码</remarks>
                  public static string Decrypt(string text)
                  {
                      return Decrypt(text, true);
                  }//end method
          
                  internal static string Decrypt(string text, bool isStrict)
                  {
                      if (string.IsNullOrEmpty(text))
                      {
                          return string.Empty;
                      }
                      else
                      {
                          text = text.Trim().Replace(' ', '+');//处理Request的+号变空格问题。
                          if (EncrpytKey != "" && (isStrict || text.EndsWith("=2")))
                          {
                              text = Decrypt(text.Substring(0, text.Length - 2), GetHash(EncrpytKey));//先解一次Key
                          }
                          return Decrypt(text, DefaultHashKey);
                      }
                  }
                  /// <summary>
                  /// 软件开发框架3des解密字符串
                  /// </summary>
                  /// <param name="text">要解密的字符串</param>
                  /// <param name="key">密钥</param>
                  /// <returns>解密后的字符串</returns>
                  /// <exception cref="">密钥错误</exception>
                  /// <remarks>静态方法,采用默认ascii编码</remarks>
                  private static string Decrypt(string text, byte[] hashKey)
                  {
                      string result = "";
                      text = text.Replace('#', '=');
                      using (TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider())
                      {
                          DES.Key = hashKey;
                          DES.Mode = CipherMode.ECB;
          
                          ICryptoTransform DESDecrypt = DES.CreateDecryptor();
                          try
                          {
                              byte[] Buffer = Convert.FromBase64String(text);
                              result = ASCIIEncoding.UTF8.GetString(DESDecrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));
                          }
                          catch
                          {
                              return text;
                          }
                      }
                      return result;
                  }
          
                  #endregion
              }

          软件开发框架密码学

          在web软件开发框架实施项目里,经常会碰到数据加密的应用场景,比如说登陆、网络传输等,这些场景的面对放在太阳下暴晒的数据我们该怎么办,这里我们提供一个密码加密助手类供大家在项目中参考。

          网站&系统开发技术学习交流群:463167176

          本站文章除注明转载外,均为本站原创或翻译,欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,共创和谐网络环境。
          转载请注明:文章转载自:软件开发框架 ? 软件开发框架密码加密助手类
          本文标题:软件开发框架密码加密助手类
          本文地址:http://www.sajuice.com/OrgTec/Plugin/0020.html

          相关文章: B/S开发框架Web安全问题及防范规范之弱口令

          电话
          电话 18718672256

          扫一扫
          二维码
          本港台开奖 <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>