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

发布时间 - 2026-01-11 01:59:16    点击率:

本文实例讲述了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 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 在Oracle关闭情况下如何修改spfile的参数  如何在IIS中新建站点并配置端口与IP地址?  中山网站推广排名,中山信息港登录入口?  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏  Android 常见的图片加载框架详细介绍  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  如何注册花生壳免费域名并搭建个人网站?  实现点击下箭头变上箭头来回切换的两种方法【推荐】  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  高性能网站服务器配置指南:安全稳定与高效建站核心方案  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】  Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能  如何打造高效商业网站?建站目的决定转化率  Laravel Fortify是什么,和Jetstream有什么关系  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  Android仿QQ列表左滑删除操作  Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制  在centOS 7安装mysql 5.7的详细教程  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  高端建站三要素:定制模板、企业官网与响应式设计优化  Laravel如何与Docker(Sail)协同开发?(环境搭建教程)  北京专业网站制作设计师招聘,北京白云观官方网站?  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  Laravel怎么上传文件_Laravel图片上传及存储配置  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  Laravel如何处理表单验证?(Requests代码示例)  Laravel安装步骤详细教程_Laravel环境搭建指南  Mybatis 中的insertOrUpdate操作  黑客如何利用漏洞与弱口令入侵网站服务器?  Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】  edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  深圳网站制作的公司有哪些,dido官方网站?  如何快速搭建个人网站并优化SEO?  如何为不同团队 ID 动态生成多个“认领值班”按钮  JavaScript如何实现继承_有哪些常用方法  郑州企业网站制作公司,郑州招聘网站有哪些?  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  网站制作大概多少钱一个,做一个平台网站大概多少钱?  如何在沈阳梯子盘古建站优化SEO排名与功能模块?