首页 > 系统相关 >.net7 AesCng 加密解密封装,仅支持Windows平台

.net7 AesCng 加密解密封装,仅支持Windows平台

时间:2023-03-18 19:45:11浏览次数:40  
标签:aesCng string Windows AesCng using net7 new memoryStream

        /// <summary>
        /// AesCng 加密
        /// 仅支持Windows平台
        /// </summary>
        /// <param name="value">明文(待加密)</param>
        /// <param name="keyValue">密钥大小为 128 位、192 位和 256 位</param>
        /// <returns></returns>
        public static (string, string) AesCngEncrypt(string value, string keyValue)
        {
            if (OperatingSystem.IsWindows())
            {
                using (AesCng aesCng = new())
                {
                    aesCng.Key = Encoding.UTF8.GetBytes(keyValue);
                    aesCng.GenerateIV();
                    using (MemoryStream memoryStream = new())
                    {
                        using (CryptoStream cryptoStream = new(memoryStream, aesCng.CreateEncryptor(), CryptoStreamMode.Write))
                        {
                            byte[] plainText = Encoding.UTF8.GetBytes(value);
                            cryptoStream.Write(plainText, 0, plainText.Length);
                            cryptoStream.FlushFinalBlock();
                            return (Convert.ToBase64String(memoryStream.ToArray()), Convert.ToBase64String(aesCng.IV));
                        }
                    }
                }
            }
            else
            {
                return (string.Empty, string.Empty);
            }
        }
        /// <summary>
        /// AesCng 解密
        /// 仅支持Windows平台
        /// </summary>
        /// <param name="value">密文(待解密)</param>
        /// <param name="keyValue">密钥大小为 128 位、192 位和 256 位</param>
        /// <param name="iv">加密时的随机初始化向量 </param>
        /// <returns></returns>
        public static string AesCngDecrypt(string value, string keyValue, string iv)
        {
            if (OperatingSystem.IsWindows())
            {
                using (AesCng aesCng = new())
                {
                    aesCng.Key = Encoding.UTF8.GetBytes(keyValue);
                    aesCng.IV = Convert.FromBase64String(iv);
                    using (MemoryStream memoryStream = new(Convert.FromBase64String(value)))
                    {
                        using (CryptoStream cryptoStream = new(memoryStream, aesCng.CreateDecryptor(), CryptoStreamMode.Read))
                        {
                            using (MemoryStream plainStream = new())
                            {
                                cryptoStream.CopyTo(plainStream);
                                return Encoding.UTF8.GetString(plainStream.ToArray());
                            }
                        }
                    }
                }
            }
            else
            {
                return string.Empty;
            }
        }

 

标签:aesCng,string,Windows,AesCng,using,net7,new,memoryStream
From: https://www.cnblogs.com/yt954437595/p/17231566.html

相关文章

  • 在Windows中安装Jenkins
    Jenkins在自动化测试中的使用 下载安装Jenkins1、下载链接:https://www.jenkins.io/download/,要选择长期支持离线型的版本:  2、安装JDK:   安装Jenkins前,......
  • windows下hanewin NFS的安装与配置
    1-官网下载服务端网址:https://www.hanewin.net/nfs-e.htm没有注册只有30天的试用期,请自行搜索解决。2-服务端配置说明:F:\,将服务端F盘(目录)共享-public,赋予读写权......
  • Windows本地用户提权(二)
    BypassUAC提权MSF模块UAC:用户控制机制windows7:useexploit/windows/local/bypassuagetsystemwindows10:方法一:useexploit/windows/local/ask\钓鱼攻击,需要......
  • Windows本地用户提权(一)
    本地用户提权AT命令提权(适用于sever2003及win7以前)普通用户在cmd中输入at时间/interactivecmd到时间后会弹出新的cmd窗口,该窗口的用户权限是systemSC命令提权(......
  • Windows Server 2016自建安装IIS
    WindowsServer2016自建安装IIS步骤1.远程连接服务器,在“桌面”>“开始”>“服务器管理器”,打开“服务器管理器”。2.在“服务器管理器”中,点击“管理”>“添......
  • Windows 远程 乌班图 Ubuntu 22.04.2(或任意版)
    1、更新sudoaptupdate(更新所有软件命令:aptupgrade)  2、安装xrdpsudoaptinstall-ytightvncserverxrdp  如果提示安装libfuse2失败,可以手动安装li......
  • 如何使用一台windows远程控制一台正在运行Linux系统的服务器(OpenSSH的使用)
    什么是OpenSSHOpenSSH是一款用于远程登录的连接工具,它使用SSH协议1。SSH协议可以用来进行远程控制或在计算机之间传送文件,比传统的方式更安全2。Windows系统默认安装......
  • Windows创建定时任务
    1.在Windows10桌面,右键点击此电脑图标,在弹出菜单中选择“管理”菜单项。 2.然后在打开的计算机管理窗口中,找到“任务计划程序”菜单项。 3.打开了任务计划程序之后,......
  • .Net7 GC标记阶段代码的改变
    前言由于业务需求,在探究.Net7的CLR,发现了一个不通的地方,也就是通过GCInfo获取到了对象之后。它并没有在GcScanRoots(对象扫描标记)里面对它进行标记,那么如果没有标记这个......
  • Windows下用docker搭建本地kafka
    1.docker创建zookeeper拉取zookeeper镜像dockerpullwurstmeister/zookeeper运行dockerrun--name=zookeeper-d-eZOOKEEPER_CLIENT_PORT=2181-p2181:2181-p2888......