C# AES加密算法

2023-11-05

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;


namespace ConsoleApplication1
{
    class AESEncryption
    {
        private static byte[] _key1 = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF, 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };


        /// <summary>
        /// AES加密算法
        /// </summary>
        /// <param name="plainText">明文字符串</param>
        /// <param name="strKey">密钥</param>
        /// <returns>返回加密后的密文字节数组</returns>
        public static byte[] AESEncrypt(string plainText, string strKey)
        { //分组加密算法
            SymmetricAlgorithm des = Rijndael.Create();
            byte[] inputByteArray = Encoding.UTF8.GetBytes(plainText);//得到需要加密的字节数组
                                                                      //设置密钥及密钥向量
            des.Key = Encoding.UTF8.GetBytes(strKey);
            des.IV = _key1;
            MemoryStream ms = new MemoryStream();
            CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
            cs.Write(inputByteArray, 0, inputByteArray.Length);
            cs.FlushFinalBlock();
            byte[] cipherBytes = ms.ToArray();//得到加密后的字节数组
            cs.Close();
            ms.Close();
            return cipherBytes;
        }
        /// <summary>
        /// AES解密
        /// </summary>
        /// <param name="cipherText">密文字节数组</param>
        /// <param name="strKey">密钥</param>
        /// <returns>返回解密后的字符串</returns>
        public static byte[] AESDecrypt(byte[] cipherText, string strKey)
        {
            SymmetricAlgorithm des = Rijndael.Create();
            des.Key = Encoding.UTF8.GetBytes(strKey);
            des.IV = _key1;
            byte[] decryptBytes = new byte[cipherText.Length];
            MemoryStream ms = new MemoryStream(cipherText);
            CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Read);
            cs.Read(decryptBytes, 0, decryptBytes.Length);
            cs.Close();
            ms.Close();
            return decryptBytes;
        }
    }

}

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;


namespace ConsoleApplication1
{




    class Program
    {
        static void Main(string[] args)
        {
            string text = "AES加密算法测试数据"; //明文
            string keys = "dongbinhusasxiny";//密钥,128位            
            byte[] encryptBytes = AESEncryption.AESEncrypt(text, keys);
            //将加密后的密文转换为Base64编码,以便显示,可以查看下结果
            Console.WriteLine("明文:" + text);
            Console.WriteLine("密文:" + Convert.ToBase64String(encryptBytes));
            //解密
            byte[] decryptBytes = AESEncryption.AESDecrypt(encryptBytes, keys);
            //将解密后的结果转换为字符串,也可以将该步骤封装在解密算法中
            string result = Encoding.UTF8.GetString(decryptBytes);
            Console.WriteLine("解密结果:" + result);
            Console.Read();
        }
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# AES加密算法 的相关文章

  • c和java语言中的换行符

    现在行分隔符取决于系统 但在 C 程序中我使用 n 作为行分隔符 无论我在 Windows 还是 Linux 中运行它都可以正常工作 为什么 在java中 我们必须使用 n 因为它与系统相关 那么为什么我们在c中使用 n 作为新行 而不管我
  • 在 C# 中创建具有单独列的分隔文本

    我一直在尝试在 C 中创建一个制表符限制的文本文件 以便数据正确显示在单独的列中 Firstname Lastname Age John Smith 17 James Sawyer 31 我尝试过 t 字符 但我得到的只是 Firstnam
  • 如何检查QProcess是否正确执行?

    QProcess process sdcompare QString command sdcompare QStringList args sdcompare command sdcompare diff args sdcompare lt
  • 如何在 C# 中从 UNIX 纪元时间转换并考虑夏令时?

    我有一个从 unix 纪元时间转换为 NET DateTime 值的函数 public static DateTime FromUnixEpochTime double unixTime DateTime d new DateTime 19
  • 如何修复此错误“GDI+ 中发生一般错误”?

    从默认名称打开图像并以默认名称保存 覆盖它 我需要从 Image Default jpg 制作图形 将其放在 picturebox1 image 上并在 picurebox1 上绘制一些图形 它有效 这不是我的问题 但我无法保存 pictu
  • 单元测试一起运行时失败,单独运行时通过

    所以我的单元测试遇到了一些问题 我不能只是将它们复制并粘贴到这里 但我会尽力而为 问题似乎是 如果我一项一项地运行测试 一切都会按预期进行 但如果我告诉它一起运行测试 则 1 5 将通过 TestMethod public void Obj
  • 如何访问另一个窗体上的ListView控件

    当单击与 ListView 所在表单不同的表单中的按钮时 我试图填充 ListView 我在 Form1 中创建了一个方法以在 Form2 中使用 并将参数传递给 Form1 中的方法 然后填充 ListView 当我调试时 我得到了传递的
  • 无法在 Windows 运行时组件库的 UserControl 中创建依赖项属性

    我想在用户控件内创建数据可绑定属性 这个用户控件包含一个 Windows 运行时组件 项目 我使用下面的代码来创建属性 public MyItem CurrentItem get return MyItem GetValue Current
  • 单击 form2 上的按钮触发 form 1 中的方法

    我对 Windows 窗体很陌生 我想知道是否可以通过单击表单 2 中的按钮来触发表单 1 中的方法 我的表格 1 有一个组合框 我的 Form 2 有一个 保存 按钮 我想要实现的是 当用户单击表单 2 中的 保存 时 我需要检查表单 1
  • 未定义的行为或误报

    我 基本上 在野外遇到过以下情况 x x 5 显然 它可以在早期版本的 gcc 下编译干净 在 gcc 4 5 1 下生成警告 据我所知 警告是由 Wsequence point 生成的 所以我的问题是 这是否违反了标准中关于在序列点之间操
  • 未经许可更改内存值

    我有一个二维数组 当我第一次打印数组的数据时 日期打印正确 但其他时候 array last i 的数据从 i 0 到 last 1 显然是一个逻辑错误 但我不明白原因 因为我复制并粘贴了 for 语句 那么 C 更改数据吗 I use g
  • 如何将整数转换为 void 指针?

    在 C 中使用线程时 我面临警告 警告 从不同大小的整数转换为指针 代码如下 include
  • C++:.bmp 到文件中的字节数组

    是的 我已经解决了与此相关的其他问题 但我发现它们没有太大帮助 他们提供了一些帮助 但我仍然有点困惑 所以这是我需要做的 我们有一个 132x65 的屏幕 我有一个 132x65 的 bmp 我想遍历 bmp 并将其分成小的 1x8 列以获
  • 有人可以提供一个使用 Amazon Web Services 的 itemsearch 的 C# 示例吗

    我正在尝试使用 Amazon Web Services 查询艺术家和标题信息并接收回专辑封面 使用 C 我找不到任何与此接近的示例 所有在线示例都已过时 并且不适用于 AWS 的较新版本 有一个开源项目CodePlex http www c
  • 如何对 Web Api 操作进行后调用?

    我创建了一个 Web API 操作 如下所示 HttpPost public void Load string siteName string providerName UserDetails userDetails implementat
  • gcc 的配置选项如何确定默认枚举大小(短或非短)?

    我尝试了一些 gcc 编译器来查看默认枚举大小是否很短 至少一个字节 强制使用 fshort enums 或无短 至少 4 个字节 强制使用 fno short enums user host echo Static assert 4 si
  • Process.Start() 方法在什么情况下返回 false?

    From MSDN https msdn microsoft com en us library e8zac0ca v vs 110 aspx 返回值 true 表示有新的进程资源 开始了 如果由 FileName 成员指定的进程资源 St
  • Server.MapPath - 给定的物理路径,预期的虚拟路径

    我正在使用这行代码 var files Directory GetFiles Server MapPath E ftproot sales 在文件夹中查找文件 但是我收到错误消息说 给定物理路径但虚拟路径 预期的 我对在 C 中使用 Sys
  • 如何在按钮单击时模拟按键 - Unity

    我对 Unity 中的脚本编写非常陌生 我正在尝试创建一个按钮 一旦单击它就需要模拟按下 F 键 要拾取一个项目 这是我当前的代码 在编写此代码之前我浏览了所有统一论坛 但找不到任何有效的东西 Code using System Colle
  • 检查Windows控制台中是否按下了键[重复]

    这个问题在这里已经有答案了 可能的重复 C 控制台键盘事件 https stackoverflow com questions 2067893 c console keyboard events 我希望 Windows 控制台程序在按下某个

随机推荐

  • VSCode配置

    VSCode配置 1 SSH远程连接到ubuntu系统 VSCode下载扩展 Config文件编写 接入SFTP 免密登陆 2 Debug模式下进入标准库文件 第三方包源码 3 VSCode大纲只显示类和函数 不显示变量 1 SSH远程连接
  • leetcode:165. 比较版本号

    题目来源 leetcode 题目描述 题目分析 比较两个版本号大小 版本号由修订号组成 中间使用 分隔 越靠近字符串前边 修订号的优先级越大 当v1 gt v2时返回 1 当v1 lt v2时返回 1 相等时返回 0 双指针 如样例所示 v
  • 微服务中使用Sentinel实现服务容错

    在微服务架构中 我们将业务拆分成一个个的服务 服务与服务之间可以相互调用 但是由于网络原因或者自身的原因 服务并不能保证服务的100 可用 如果单个服务出现问题 调用这个服务就会出现网络延迟 此时若有大量的网络涌入 会形成任务堆积 最终导致
  • 快速入门(完整):Python练手经典实例100个 (让你的Python技能点全亮)

    Python练手经典实例100个 一 Python 基础 62 例 1 十转二 2 十转八 3 十转十六 4 字符串转字节 5 转为字符串 6 十转ASCII 7 ASCII转十 8 转为字典 9 转为浮点类型 10 转为整型 11 转为集
  • [转]修改python默认的编码方式

    今天碰到了 python 编码问题 报错信息如下Traceback most recent call last File ntpath pyc line 108 in joinUnicodeDecodeError ascii codec c
  • L6200E: Symbol **** multiply defined

    这个错误是链接器 Linker 报告的错误 指示在链接过程中出现了符号 SystemInit 的多重定义 具体来说 符号 SystemInit 被两个目标文件 system stm32f0xx 1 o和system stm32f0xx o
  • 图解RAM结构与原理,系统内存的Channel、Chip与Bank

    文章目录 转载正文 标题挥发性内存分2种 SRAM和DRAM 主内存子系统 channel 和 DIMM rank 和 chip bank row column 内存的读写方式 越多越好 加速读写能力 本文转载来自 图解RAM结构与原理 系
  • 利用mybatis框架的解析器实现文本动态参数

    问题 脚本模板完成后 有些不同的主机执行同一个脚本模板时需要的参数不一样 那么在不同的主机上执行同个脚本时怎么动态将参数赋值给待执行的脚本 而不用直接修改脚本内容 解决方案 Mybatis框架本身的解析器GenericTokenParser
  • Springboot整合Zipkin+kafka+ELK,实现链路追踪和日志收集

    背景 随着项目的深入 久不久可能出现些问题 但是查询起来又极其麻烦 线上有三台服务器 不知道报错日志在那台上 很麻烦 所以领导要求把项目的链路追踪和日志给统一输出到elk中 可以实现在elk查询 Zipkin Sleuth链路追踪 先来实现
  • 宠物行业如何进行软文营销

    如今 宠物已经成为了人们生活中不可或缺的一部分 大众对于萌宠的喜爱与日俱增 随着 萌宠经济 升温 越来越多的商机开始出现 伴随着宠物市场竞争的日益激烈 宠物行业的营销光靠硬广告很难吸引受众 现在的大趋势应该是软文营销为主 那么宠物行业应该如
  • Neural Network Intelligence (NNI)

    环境 conda install pytorch 1 7 0 torchvision 0 8 0 torchaudio 0 7 0 cudatoolkit 10 1 c pytorch 每次看起来都很简单 自己写起来才知道哪里不会 impo
  • 【整合】【故障排查】LINUX系统资源使用情况排查(top、htop、ps、pstree)

    LINUX系统资源使用情况排查 工作中我们常见的资源使用情况的排查包括 CPU使用情况 内存使用情况 网络带宽使用情况等等 而我们常用的工具有top htop ps pstree等等 htop top加强版 pstree ps加强版 ps与
  • spark sql 创建rdd以及DataFrame和DataSet互转

    spark sql 创建rdd以及DataFrame和DataSet互转 使用SparkSession读取本地文件创建rdd DateSet的介绍 DataFrame的介绍 Rdd转DateFrame 读取本地文件得到DataFrame D
  • 剑指offer面试题62(java版):圆圈中最后剩下的数字

    welcome to my blog 剑指offer面试题62 java版 圆圈中最后剩下的数字 题目描述 每年六一儿童节 牛客都会准备一些小礼物去看望孤儿院的小朋友 今年亦是如此 HF作为牛客的资深元老 自然也准备了一些小游戏 其中 有个
  • latex加空行,加分割线,注释,设置表格字体大小等操作

    1 在文字末尾加空行可以用 2 直接加空行可以用 3 分割线 hrule 4 Latex编辑器Texstudio的注释快捷键 注释 Ctrl T 取消注释 Ctrl U 5 设置表格字体大小 Latex字体大小设置代码 begin tabl
  • MobaXterm连接服务器(虚拟机)

    下载链接 MobaXterm 终端工具 下载 安装 使用教程 蜗牛也不慢 的博客 CSDN博客 这个讲的很详细了 注意虚拟机的IP获取
  • 关于UNITY中System.Drawing引用失败的处理方法

    关于UNITY中System Drawing引用失败的处理方法 今天在使用EPPlus中 遇到一个处于This type has been forwarded to assembly System Drawing Version 4 0 0
  • 解决pip下载pytorch因网速慢而失败的问题

    一 一般下载pytorch方法 1 首先打开浏览器 输入 pytorch 然后进行搜索 点击pytorch的官网就进入了 2 进入到pytorch的官网后 划叶到下面 找到下面的选择框 根据自己的配置 选择正确的版本号 选择完后 把红色框内
  • 完美立方(C语言)

    题目 形如 a 3 b 3 c 3 d 3a 3 b 3 c 3 d 3 的等式被称为完美立方等式 例如 12 3 6 3 8 3 10 312 3 6 3 8 3 10 3 编写一个程序 对任给的正整数 N N le 100 N N 10
  • C# AES加密算法

    using System using System Collections Generic using System IO using System Linq using System Security Cryptography using