C#中使用DES和AES加密解密

ExpandedBlockStart.gif代码
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);
        }
    }
}

 

转载于:https://www.cnblogs.com/kevin-top/archive/2010/07/01/1769351.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/423121.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java思维导图

Java思维导图1. java 基础知识思维导图2. juc知识点总结3. 缓存相关知识4. 性能调优5.深入理解java 虚拟机&#xff08;感谢分享&#xff09;6. javaNIO&#xff08;IO&#xff09;1. java 基础知识思维导图 2. juc知识点总结 3. 缓存相关知识 4. 性能调优 5.深入理解java 虚拟…

【剑指offer - C++/Java】1、二维数组中的查找

学习交流加 个人qq&#xff1a; 1126137994个人微信&#xff1a; liu1126137994学习交流资源分享qq群&#xff1a; 962535112 题目链接&#xff1a; 二维数组中的查找 文章目录题目描述&#xff1a;解题思路方法1方法2总结题目描述&#xff1a; 在一个二维数组中&#xff08;每…

【剑指offer - C++/Java】2、替换空格

学习交流加 个人qq&#xff1a; 1126137994个人微信&#xff1a; liu1126137994学习交流资源分享qq群&#xff1a; 962535112 题目链接&#xff1a; 替换空格 文章目录题目描述解题思路总结题目描述 请实现一个函数&#xff0c;将一个字符串中的每个空格替换成“%20”。例如&am…

数据仓设计

TOC 数据仓库&#xff0c;这里采用层级的设计方式&#xff0c;设计的粒度&#xff0c;依据业务的复杂度而定&#xff1b; 这里只是介绍 数据仓库的设计&#xff0c;后续补充一下&#xff0c;具体的实现细节和使用工具&#xff1b;

【OS学习笔记】一 处理器、内存和指令

学习交流加 个人qq&#xff1a; 1126137994个人微信&#xff1a; liu1126137994学习交流资源分享qq群&#xff1a; 962535112 我们已经知道&#xff0c;处理器是一台电子计算机的核心&#xff0c;它会在振荡器脉冲的激励下&#xff0c;从内存中获取指令&#xff0c;并发起一系列…

AS3 CookBook学习整理(八)

1. AS3的事件机制 事件流机制即为捕获--目标--冒泡,分别对应event.eventPhase的值1(EventPhase.CAPTURING_PHASE)&#xff0c;2(EventPhase.AT_TARGET)&#xff0c;3(EventPhase.BUBBLING_PHASE) 假设有3个Sprite&#xff0c;分别为绿、蓝、黄(如图),层叠关系为绿色包含蓝色&am…

边缘计算+云计算

后续更新中 边缘计算云计算&#xff1a; 促进企业数字化向数智化发展概念1.以下是边缘计算的四个组织2. 边缘设备对IoT的增强作用 &#xff08;更新&#xff09;3. 边缘计算应用于IoT的四个层次4. AI在边缘设备计算领域的三种应用场景5. 云服务架构6.案例解析6.1国家电网&#…

【剑指offer - C++/Java】3、从尾到头打印链表

学习交流加 个人qq&#xff1a; 1126137994个人微信&#xff1a; liu1126137994学习交流资源分享qq群&#xff1a; 962535112 牛客网题目链接&#xff1a; 从尾到头打印链表 文章目录题目描述1、递归解法1.1、 递归解法一java代码&#xff1a;C代码分析&#xff1a;1.2 递归解法…

网络协议之http和tcp思维导图

http协议和tcp协议之前学的整理一部分&#xff0c;后续更新

【剑指offer - C++/Java】4、重建二叉树

牛客网题目链接&#xff1a;重建二叉树 文章目录0 题目描述&#xff1a;1、题目分析2、代码2.1、java代码2.2 C代码3、总结0 题目描述&#xff1a; 输入某二叉树的前序遍历和中序遍历的结果&#xff0c;请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字…

Windows下Android开发环境 搭建

1、 下载Android SDK &#xff08;1&#xff09;官网下载解压后即可用。 在http://androidappdocs.appspot.com/sdk/index.html 下选择 合适自己的平台下载&#xff0c;下载后解压 运行 【SDK Setup.exe】 出现在线安装包。 会出现“Failed to fetch URL https://dl-ssl.google…

【OS学习笔记】二 汇编语言和汇编软件

学习交流加 个人qq&#xff1a; 1126137994个人微信&#xff1a; liu1126137994学习交流资源分享qq群&#xff1a; 962535112 上一篇文章讲解了处理器&#xff0c;内存&#xff0c;和指令。学习了Intel 8086处理器的相关知识&#xff0c;如Intel通用寄存器的作用&#xff0c;程…

【软件开发底层知识修炼】一 深入浅出处理器之一 微处理器与微控制器

学习交流加&#xff08;可免费帮忙下载CSDN资源&#xff09;&#xff1a;个人微信&#xff1a; liu1126137994学习交流资源分享qq群1&#xff08;已满&#xff09;&#xff1a; 962535112学习交流资源分享qq群2&#xff1a; 780902027 深入浅出处理器这几篇文章可能你觉得对软件…

【软件开发底层知识修炼】二 深入浅出处理器之二 中断的概念与意义

学习交流加 个人qq&#xff1a; 1126137994个人微信&#xff1a; liu1126137994学习交流资源分享qq群&#xff1a; 962535112 上一篇文章我们学习了微处理器与微控制器的区别。点击链接查看上一篇文章的内容&#xff1a;微处理器与微控制器 本篇文章我们学习中断的概念与意义。…

推荐学习-数据结构与算法之美

推荐一个学习资源&#xff1a;数据结构与算法之美。主要包括以下几个学习内容&#xff1a; 20个经典数据结构与算法100个真实项目场景案例文科生都能看懂的算法手绘图解轻松搞定BAT的面试通关秘籍 作者&#xff1a;王争 前谷歌工程师 内容很强。扫描我的二维码买的话&#x…

【软件开发底层知识修炼】三 深入浅出处理器之三 内存管理与内存管理单元(MMU)

学习交流加 个人qq&#xff1a; 1126137994个人微信&#xff1a; liu1126137994学习交流资源分享qq群&#xff1a; 962535112 上一篇文章学习了中断的概念与意义&#xff0c;以及中断的应用-断点调试原理。点击链接复习上一篇文章&#xff1a;中断的概念与意义 本片文章继续学…

hbase思维导图

持续更新中 hbase思维导图 感谢分享1. hbase 概述2. hbase 数据模型3. hbase 架构4. hbase 的读写流程5. hbase 优化1. hbase 概述 2. hbase 数据模型 3. hbase 架构 4. hbase 的读写流程 5. hbase 优化

安卓从入门到进阶推荐学习方法与书籍整理(pdf)

前言&#xff1a;技术书阅读方法论 一.速读一遍&#xff08;最好在1~2天内完成&#xff09; 人的大脑记忆力有限&#xff0c;在一天内快速看完一本书会在大脑里留下深刻印象&#xff0c;对于之后复习以及总结都会有特别好的作用。 对于每一章的知识&#xff0c;先阅读标题&…

SharePoint中的权限体系

1.MOSS中的权限结构 MOSS中的权限结构主要有三部分&#xff1a;网站权限&#xff0c;列表权限&#xff0c;个人权限。 网站权限由18种如下图&#xff1a; 列表权限由12种&#xff0c;如下图&#xff1a; 个人权限由三种&#xff0c;如下图&#xff1a; 2.权限级别 上面提供…