• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > ASP.NET加密解密算法分享

ASP.NET加密解密算法分享

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了md5加密 asp.net,asp.net,asp net培训,asp和asp.net的区别,零基础学asp.net等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
#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 一个用hash实现的加密解密方法
    /// <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个字符,如果长度小于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";
      //  //构造对称算法
      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;




 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • asp.net的加密解密技巧
  • ASP.NET加密解密算法分享
  • asp.net实现md5加密
  • asp.net中使用cookie与md5加密实现记住密码功能的实现代码
  • asp.net下加密Config的方法
  • ASP.NET中MD5与SHA1加密的几种方法
  • asp.net下XML的加密和解密实现方法
  • asp.net EncryptHelper 加密帮助类
  • asp.net Md5的用法小结
  • 彻底解决ASP.NET MD5加密中文结果和ASP不一致的问题

相关文章

  • 2017-05-11Winform OpenFileDialog打开文件对话框
  • 2017-05-11asp.net+js实现批量编码与解码的方法
  • 2017-05-11MVC4 基础 枚举生成 DropDownList 实用技巧
  • 2017-05-11.net下调用sqlserver存储过程的小例子
  • 2017-05-11用ASP.Net实现文件的在线压缩和解压缩
  • 2017-05-11几种判断asp.net中session过期方法的比较
  • 2017-05-11ASP.NET2.0+SQL Server2005构建多层应用第1/4页
  • 2017-05-11封装的一个asp.net验证码类
  • 2017-05-11asp.net反射简单应用实例
  • 2017-05-11如何实现ListView高效分页代码

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • asp.net实现在线音乐播放器示例
    • 介绍几个ASP.NET中容易忽略但却很重要的方法函数
    • asp.net 防止用户通过后退按钮重复提交表单
    • 巧妙使用JQuery Clone 添加多行数据,并更新到数据库的实现代码
    • 代码实现打印功能(asp.net+javascript)
    • Asp.net MVC实现生成Excel并下载功能
    • asp.net采集页面上所有图像图片资源的具体方法
    • asp.net发送邮件示例分享
    • .NET中函数Main的使用技巧
    • 充分利用ASP.NET的三种缓存提高站点性能的注意方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有