全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

C#使用DES和AES实现加密解密功能示例

本文实例讲述了C#使用DES和AES实现加密解密功能。分享给大家供大家参考,具体如下:

using System;
using System.Text;
using System.Security.Cryptography;
using System.IO;
namespace MyCryptography
{
  /// <summary>
  /// DES加密解密
  /// </summary>
  public class DES
  {
    /// <summary>
    /// 获取密钥
    /// </summary>
    private static string Key
    {
      get { return @"P@+#wG+Z"; }
    }
    /// <summary>
    /// 获取向量
    /// </summary>
    private static string IV
    {
      get { return @"L%n67}G\Mk@k%:~Y"; }
    }
    /// <summary>
    /// DES加密
    /// </summary>
    /// <param name="plainStr">明文字符串</param>
    /// <returns>密文</returns>
    public static string DESEncrypt(string plainStr)
    {
      byte[] bKey = Encoding.UTF8.GetBytes(Key);
      byte[] bIV = Encoding.UTF8.GetBytes(IV);
      byte[] byteArray = Encoding.UTF8.GetBytes(plainStr);
      string encrypt = null;
      DESCryptoServiceProvider des = new DESCryptoServiceProvider();
      try
      {
        using (MemoryStream mStream = new MemoryStream())
        {
          using (CryptoStream cStream = new CryptoStream(mStream, des.CreateEncryptor(bKey, bIV), CryptoStreamMode.Write))
          {
            cStream.Write(byteArray, 0, byteArray.Length);
            cStream.FlushFinalBlock();
            encrypt = Convert.ToBase64String(mStream.ToArray());
          }
        }
      }
      catch { }
      des.Clear();
      return encrypt;
    }
    /// <summary>
    /// DES解密
    /// </summary>
    /// <param name="encryptStr">密文字符串</param>
    /// <returns>明文</returns>
    public static string DESDecrypt(string encryptStr)
    {
      byte[] bKey = Encoding.UTF8.GetBytes(Key);
      byte[] bIV = Encoding.UTF8.GetBytes(IV);
      byte[] byteArray = Convert.FromBase64String(encryptStr);
      string decrypt = null;
      DESCryptoServiceProvider des = new DESCryptoServiceProvider();
      try
      {
        using (MemoryStream mStream = new MemoryStream())
        {
          using (CryptoStream cStream = new CryptoStream(mStream, des.CreateDecryptor(bKey, bIV), CryptoStreamMode.Write))
          {
            cStream.Write(byteArray, 0, byteArray.Length);
            cStream.FlushFinalBlock();
            decrypt = Encoding.UTF8.GetString(mStream.ToArray());
          }
        }
      }
      catch { }
      des.Clear();
      return decrypt;
    }
  }
  /// <summary>
  /// AES加密解密
  /// </summary>
  public class AES
  {
    /// <summary>
    /// 获取密钥
    /// </summary>
    private static string Key
    {
      get { return @")O[NB]6,YF}+efcaj{+oESb9d8>Z'e9M"; }
    }
    /// <summary>
    /// 获取向量
    /// </summary>
    private static string IV
    {
      get { return @"L+\~f4,Ir)b$=pkf"; }
    }
    /// <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);
    }
  }
}

PS:关于加密解密感兴趣的朋友还可以参考本站在线工具:

文字在线加密解密工具(包含AES、DES、RC4等):
http://tools./password/txt_encode

MD5在线加密工具:
http://tools./password/CreateMD5Password

在线散列/哈希算法加密工具:
http://tools./password/hash_encrypt

在线MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools./password/hash_md5_sha

在线sha1/sha224/sha256/sha384/sha512加密工具:
http://tools./password/sha_encode

更多关于C#相关内容还可查看本站专题:《C#加密与解密算法与技巧总结》、《C#窗体操作技巧汇总》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#数据结构与算法教程》、《C#数组操作技巧总结》及《C#面向对象程序设计入门教程》

希望本文所述对大家C#程序设计有所帮助。


# C#  # DES  # AES  # 加密  # 解密  # C#开发中常用的加密解密方法汇总  # c# AES字节数组加密解密流程及代码实现  # c# rsa加密解密详解  # C#中RSA加密与解密的实例详解  # C#开发中经常用的加密解密方法示例  # C#使用RSA加密解密文件  # C#实现Base64处理的加密解密  # 编码解码示例  # C#代码实现对AES加密解密  # C#实现加密与解密详解  # 加密解密  # 加密工具  # 程序设计  # 操作技巧  # 相关内容  # 还可以  # 感兴趣  # 数据结构  # 给大家  # 还可  # 更多关于  # 所述  # 面向对象  # 讲述了  # Encoding  # bKey  # byteArray  # bIV  # GetBytes  # byte 


相关文章: 建站168自助建站系统:快速模板定制与SEO优化指南  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  代购小票制作网站有哪些,购物小票的简要说明?  高端云建站费用究竟需要多少预算?  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  制作网站的基本流程,设计网站的软件是什么?  网站制作壁纸教程视频,电脑壁纸网站?  如何在阿里云域名上完成建站全流程?  linux top下的 minerd 木马清除方法  php json中文编码为null的解决办法  制作网站的公司有哪些,做一个公司网站要多少钱?  C++如何使用std::optional?(处理可选值)  黑客如何利用漏洞与弱口令入侵网站服务器?  建站主机CVM配置优化、SEO策略与性能提升指南  娃派WAP自助建站:免费模板+移动优化,快速打造专业网站  装修招标网站设计制作流程,装修招标流程?  建站主机系统SEO优化与智能配置核心关键词操作指南  网站专业制作公司有哪些,做一个公司网站要多少钱?  C++时间戳转换成日期时间的步骤和示例代码  如何解决ASP生成WAP建站中文乱码问题?  定制建站价位费用解析与套餐推荐全攻略  如何正确选择百度移动适配建站域名?  免费网站制作appp,免费制作app哪个平台好?  建站主机选哪家性价比最高?  网站制作软件免费下载安装,有哪些免费下载的软件网站?  Python路径拼接规范_跨平台处理说明【指导】  营销式网站制作方案,销售哪个网站招聘效果最好?  整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?  网页设计与网站制作内容,怎样注册网站?  桂林网站制作公司有哪些,桂林马拉松怎么报名?  如何自定义建站之星网站的导航菜单样式?  如何选择高效可靠的多用户建站源码资源?  如何在搬瓦工VPS快速搭建网站?  建站之星体验版:智能建站系统+响应式设计,多端适配快速建站  教育培训网站制作流程,请问edu教育网站的域名怎么申请?  头像制作网站在线制作软件,dw网页背景图像怎么设置?  广州建站公司哪家好?十大优质服务商推荐  SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?  建站之星安装后如何配置SEO及设计样式?  ,如何利用word制作宣传手册?  如何规划企业建站流程的关键步骤?  网站制作难吗安全吗,做一个网站需要多久时间?  ,石家庄四十八中学官网?  香港服务器部署网站为何提示未备案?  网站app免费制作软件,能免费看各大网站视频的手机app?  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  如何在服务器上配置二级域名建站?  开封网站制作公司,网络用语开封是什么意思?  网站好制作吗知乎,网站开发好学吗?有什么技巧?  网站网页制作专业公司,怎样制作自己的网页? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。