一、AES加解密方法如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;

namespace ApiTest
{
    public class AesUtil
    {
        /// <summary>
        ///  AES 加密
        /// </summary>
        /// <param name="str">明文(待加密)</param>
        /// <param name="key">密文</param>
        /// <returns></returns>
        public static string AesEncrypt(string str, string key)
        {
            if (string.IsNullOrEmpty(str)) return null;
            Byte[] toEncryptArray = Encoding.UTF8.GetBytes(str);

RijndaelManaged rm = new RijndaelManaged
            {
                Key = Convert.FromBase64String(key),
                Mode = CipherMode.ECB,
                Padding = PaddingMode.PKCS7
            };

ICryptoTransform cTransform = rm.CreateEncryptor();
            Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);

return Convert.ToBase64String(resultArray, 0, resultArray.Length);
        }
        /// <summary>
        ///  AES 解密
        /// </summary>
        /// <param name="str">明文(待解密)</param>
        /// <param name="key">密文</param>
        /// <returns></returns>
        public static string AesDecrypt(string str, string key)
        {
            if (string.IsNullOrEmpty(str)) return null;
            Byte[] toEncryptArray = Convert.FromBase64String(str);

RijndaelManaged rm = new RijndaelManaged
            {
                Key = Convert.FromBase64String(key),
                Mode = CipherMode.ECB,
                Padding = PaddingMode.PKCS7
            };

ICryptoTransform cTransform = rm.CreateDecryptor();
            Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);

return Encoding.UTF8.GetString(resultArray);
        }
    }
}

二、压缩解压,引入动态库ICSharpCode.SharpZipLib.dll

/// <summary>
        /// Zips the encode.
        /// </summary>
        /// <param name="str">The string.</param>
        /// <param name="iszip">if set to <c>true</c> [iszip].</param>
        /// <returns></returns>
        public static string ZipEncode(string str, bool iszip)
        {
            string encodeStr = "";
            try
            {
                if (iszip)
                {
                    byte[] rawData = Encoding.UTF8.GetBytes(str);
                    byte[] zippedData = Compress(rawData);
                    encodeStr = Convert.ToBase64String(zippedData);
                }
                else
                {
                    byte[] rawData = Encoding.UTF8.GetBytes(str);
                    encodeStr = Convert.ToBase64String(rawData);
                }
            }
            catch (Exception ee)
            {
                Console.WriteLine(ee.StackTrace);
            }

return encodeStr;
        }

/// <summary>
        /// Uns the zip decode.
        /// </summary>
        /// <param name="str">The string.</param>
        /// <param name="iszip">if set to <c>true</c> [iszip].</param>
        /// <returns></returns>
        public static string UNZipDecode(string str, bool iszip)
        {
            string decodeStr = "";
            try
            {
                byte[] rawData = Convert.FromBase64String(str);
                if (iszip)
                {
                    byte[] zippedData = DECompress(rawData);
                    decodeStr = Encoding.UTF8.GetString(zippedData);
                }
                else
                {
                    decodeStr = Convert.ToBase64String(rawData);
                }
            }
            catch (Exception ee)
            {
                Console.WriteLine(ee.StackTrace);
            }

return decodeStr;
        }

/// <summary>
        /// 压缩
        /// </summary>
        /// <param name="bytesToCompress">The bytes to compress.</param>
        /// <returns></returns>
        public static byte[] Compress(byte[] bytesToCompress)
        {
            MemoryStream ms = new MemoryStream();
            ZipOutputStream s = new ZipOutputStream(ms);
            s.PutNextEntry(new ZipEntry("0"));
            s.Write(bytesToCompress, 0, bytesToCompress.Length);
            s.Close();
            return ms.ToArray();
        }

/// <summary>
        /// 解压
        /// </summary>
        /// <param name="bytesToCompress">The bytes to compress.</param>
        /// <returns></returns>
        public static byte[] DECompress(byte[] bytesToCompress)
        {
            Stream ms = new MemoryStream(bytesToCompress);
            ZipInputStream s = new ZipInputStream(ms);
            s.GetNextEntry();
            MemoryStream ms2 = new MemoryStream();
            s.CopyTo(ms2);

return ms2.ToArray();
        }

C#中AES加解密和zip压缩相关推荐

  1. openssl c++实现bouncycastle中AES加解密

    0x01 为什么要用bouncycastle 先说说JCE(Java Cryptography Extension)是一组包,它们提供用于加密.密钥生成和协商以及 Message Authentica ...

  2. android 中如何用aes算法加密解密zip文件,android中AES加解密的使用方法

    今天在android项目中使用AES对数据进行加解密,遇到了很多问题,网上也找了很多资料,也不行.不过最后还是让我给搞出来了,这里把这个记录下来,不要让别人走我的弯路,因为网上绝大多数的例子都是行不通 ...

  3. QT 基于AES加解密的使用,解析java端发来的密文

    背景 java端往ukey中写授权信息,C++端从ukey中读取授权信息. java端写入的授权信息是加密的,并且要可逆. 因为java端采用的是AES加密的,所以我(C++端)也只好采用对等形式搞定 ...

  4. java aes 工具类_Java中的AES加解密工具类:AESUtils

    本人手写已测试,大家可以参考使用 package com.mirana.frame.utils.encrypt; import com.mirana.frame.constants.SysConsta ...

  5. C语言实现AES加解密

    C语言实现AES加解密 AES算法 具体代码 AES算法 (AES)RIJNDAEL算法是一个数据块长度盒密钥长度都可变的分组加密算法,其数据块长度和密钥长度都可独立地选定为大于等于128位且小于等于 ...

  6. 前端 crypto-js aes 加解密

    背景 前段时间公司做项目,该项目涉及到的敏感数据比较多,经过的一波讨论之后,决定前后端进行接口加密处理,采用的是 AES + BASE64 算法加密~ 网上关于 AES 对称加密的算法介绍看上一篇! ...

  7. aes js 加盐值 解密_cryptoJS AES 加解密简单使用

    简单记录一下,前端利用 cryptoJS 如何加解密的.主要是关于 AES 加解密. 需求描述:需要对 url 中的参数进行 AES 解密,然后再把该参数进行 MD5 加密通过接口传递. AES AE ...

  8. php aes 256 加解密,PHP完整的AES加解密算法使用及例子(256位)

    依赖PHP自身的mcrypt扩展 class aes { // CRYPTO_CIPHER_BLOCK_SIZE 32 private $_secret_key = 'default_secret_k ...

  9. 利用openssl进行aes加解密

    之前写过aes加密算法简单说明,本篇用openssl对aes的ecb和cbc模式进行代码编写. 现在拿128位的aes加解密进行说明. 首先强调的是,在openssl提供的函数中,加密和解密每次只能针 ...

最新文章

  1. spring-aop-01
  2. Oracle PL/SQL之Flashback Table与外键约束
  3. syslinux引导扇区不支持ntfs文件系统_实战 FAT12 文件系统
  4. ASP.NET Web下基于Forms的验证
  5. GridView实现数据编辑和删除(一)
  6. python中值滤波介绍_Python 实现中值滤波、均值滤波的方法
  7. Spark记录-Scala记录(基础程序例子)
  8. R语言编程基础(2)
  9. linux系统外接硬盘_如何使用外部硬盘安装linux系统?
  10. 老罗Android开发 视频教程
  11. 雷达多普勒频率计算公式_智能驾驶之眼-毫米波雷达技术详解
  12. RDP VS VNC 速度测试
  13. ShoeBox制作字体
  14. 抱薪者说 | 君莫:穿越山海,终成“C链小雷锋”
  15. AndroidStudio 集成 OpenCV
  16. UML知识点总结(一)
  17. Android音乐播放模式切换-外放、听筒、耳机
  18. 【荐读】基于文本数据的消费者洞察
  19. 搭建K8S集群之node节点部署
  20. conda安装jupyter notebook,解决无法远程

热门文章

  1. java计算机毕业设计-食材采购平台-源程序+mysql+系统+lw文档+远程调试
  2. php外卖小哥,【看点】外卖小哥,谢谢你(随笔)
  3. 单田芳评书迅雷打包下载
  4. c语言1GB转成B,计算机应用基础考试题
  5. Python学习手册(第11章)赋值、表达式和打印
  6. win10笔记本|wifi图标消失|解决方法
  7. batch size的作用及如何设置
  8. VC6 向 VC9 移植时常见BUG
  9. draft.js--富文本编辑器框架的实践(一)
  10. kubernetes ingress路由配置http body大小限制,访问k8s服务的时候报错:413 Request Entity Too Large