当前位置: 首页 > article >正文

C# AES-128-CBC 加密

一、加密

        /// <summary>
        /// 加密
        /// </summary>
        public static string AesEncrypt(string toEncrypt)
        {
            byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);
            byte[] keyArray = UTF8Encoding.UTF8.GetBytes(Key);//注意编码格式(utf8编码 UTF8Encoding)
            byte[] ivArray = UTF8Encoding.UTF8.GetBytes(Iv);

            RijndaelManaged rDel = new RijndaelManaged();
            rDel.KeySize = 128;
            rDel.BlockSize = 128;
            rDel.Key = keyArray;
            rDel.IV = ivArray;
            rDel.Mode = CipherMode.CBC;
            ICryptoTransform cTransform = rDel.CreateEncryptor();//加密
            byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
            return Convert.ToBase64String(resultArray, 0, resultArray.Length);


        }

二、解密

        /// <summary>
        /// 解密
        /// </summary>
        public static string AesDecrypt(string toDecrypt)
        {
            string key32 = Key.PadRight(16);

            byte[] toEncryptArray = Convert.FromBase64String(toDecrypt);
            byte[] keyArray = UTF8Encoding.UTF8.GetBytes(Key);//注意编码格式(utf8编码 UTF8Encoding)
            byte[] ivArray = UTF8Encoding.UTF8.GetBytes(Iv);

            RijndaelManaged rDel = new RijndaelManaged();
            rDel.KeySize = 128;
            rDel.BlockSize = 128;
            rDel.Key = keyArray;
            rDel.IV = ivArray;
            rDel.Mode = CipherMode.CBC;

            ICryptoTransform cTransform = rDel.CreateDecryptor();//解密
            byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
            return UTF8Encoding.UTF8.GetString(resultArray);
        }

三、具体使用

     static void Main(string[] args)
        {
            AESEncoder.Key = "nsmkindi".PadRight(16);

            string s1 = AESEncoder.AesEncrypt("abcd123哪里");
            Console.WriteLine("加密:" + s1);

            string s2 = AESEncoder.AesDecrypt(s1);
            Console.WriteLine("解密:" + s2);

            Console.ReadKey();

        }

四、完结。 


http://www.kler.cn/a/157254.html

相关文章:

  • Linux中的用户创建及参数说明
  • PHP API的数据交互类型设计
  • Python小白学习教程从入门到入坑------第二十六课 单例模式(语法进阶)
  • 革命性AI搜索引擎!ChatGPT最新功能发布,无广告更智能!
  • NestJS 项目中如何使用 class-validator 进行数据验证
  • IDEA git提交时如何忽略某个文件或文件夹
  • 【电源专题】什么是电源管理
  • OpenCV快速入门:移动物体检测和目标跟踪
  • python 运用pandas 库处理excel 表格数据
  • C++11的互斥量
  • C语言枚举
  • react-native实践日记--3.ui-kitten中的button设置字体颜色无效
  • AI医疗交流平台【Docola】申请823万美元纳斯达克IPO上市
  • json序列化时Long类型转换为String类型
  • Day50力扣打卡
  • Python类型注解必备利器:typing模块解读指南
  • MC:aternos使用报告(一)
  • nginx部署多个vue或react项目
  • 回溯法及例题(C++实现)
  • 大三上oracle数据库期末复习
  • dp-拦截导弹2
  • 计算机辅助药物设计AIDD-小分子-蛋白质|分子生成|蛋白质配体相互作用预测
  • RWA+AI 叙事下的 ProsperEx,对 Web3 时代交易的重新定义
  • JAVA泛型概念的理解
  • 电压驻波比
  • Oracle 11g安装过程