C#中AES加解密和zip压缩
一、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压缩相关推荐
- openssl c++实现bouncycastle中AES加解密
0x01 为什么要用bouncycastle 先说说JCE(Java Cryptography Extension)是一组包,它们提供用于加密.密钥生成和协商以及 Message Authentica ...
- android 中如何用aes算法加密解密zip文件,android中AES加解密的使用方法
今天在android项目中使用AES对数据进行加解密,遇到了很多问题,网上也找了很多资料,也不行.不过最后还是让我给搞出来了,这里把这个记录下来,不要让别人走我的弯路,因为网上绝大多数的例子都是行不通 ...
- QT 基于AES加解密的使用,解析java端发来的密文
背景 java端往ukey中写授权信息,C++端从ukey中读取授权信息. java端写入的授权信息是加密的,并且要可逆. 因为java端采用的是AES加密的,所以我(C++端)也只好采用对等形式搞定 ...
- java aes 工具类_Java中的AES加解密工具类:AESUtils
本人手写已测试,大家可以参考使用 package com.mirana.frame.utils.encrypt; import com.mirana.frame.constants.SysConsta ...
- C语言实现AES加解密
C语言实现AES加解密 AES算法 具体代码 AES算法 (AES)RIJNDAEL算法是一个数据块长度盒密钥长度都可变的分组加密算法,其数据块长度和密钥长度都可独立地选定为大于等于128位且小于等于 ...
- 前端 crypto-js aes 加解密
背景 前段时间公司做项目,该项目涉及到的敏感数据比较多,经过的一波讨论之后,决定前后端进行接口加密处理,采用的是 AES + BASE64 算法加密~ 网上关于 AES 对称加密的算法介绍看上一篇! ...
- aes js 加盐值 解密_cryptoJS AES 加解密简单使用
简单记录一下,前端利用 cryptoJS 如何加解密的.主要是关于 AES 加解密. 需求描述:需要对 url 中的参数进行 AES 解密,然后再把该参数进行 MD5 加密通过接口传递. AES AE ...
- php aes 256 加解密,PHP完整的AES加解密算法使用及例子(256位)
依赖PHP自身的mcrypt扩展 class aes { // CRYPTO_CIPHER_BLOCK_SIZE 32 private $_secret_key = 'default_secret_k ...
- 利用openssl进行aes加解密
之前写过aes加密算法简单说明,本篇用openssl对aes的ecb和cbc模式进行代码编写. 现在拿128位的aes加解密进行说明. 首先强调的是,在openssl提供的函数中,加密和解密每次只能针 ...
最新文章
- spring-aop-01
- Oracle PL/SQL之Flashback Table与外键约束
- syslinux引导扇区不支持ntfs文件系统_实战 FAT12 文件系统
- ASP.NET Web下基于Forms的验证
- GridView实现数据编辑和删除(一)
- python中值滤波介绍_Python 实现中值滤波、均值滤波的方法
- Spark记录-Scala记录(基础程序例子)
- R语言编程基础(2)
- linux系统外接硬盘_如何使用外部硬盘安装linux系统?
- 老罗Android开发 视频教程
- 雷达多普勒频率计算公式_智能驾驶之眼-毫米波雷达技术详解
- RDP VS VNC 速度测试
- ShoeBox制作字体
- 抱薪者说 | 君莫:穿越山海,终成“C链小雷锋”
- AndroidStudio 集成 OpenCV
- UML知识点总结(一)
- Android音乐播放模式切换-外放、听筒、耳机
- 【荐读】基于文本数据的消费者洞察
- 搭建K8S集群之node节点部署
- conda安装jupyter notebook,解决无法远程
热门文章
- java计算机毕业设计-食材采购平台-源程序+mysql+系统+lw文档+远程调试
- php外卖小哥,【看点】外卖小哥,谢谢你(随笔)
- 单田芳评书迅雷打包下载
- c语言1GB转成B,计算机应用基础考试题
- Python学习手册(第11章)赋值、表达式和打印
- win10笔记本|wifi图标消失|解决方法
- batch size的作用及如何设置
- VC6 向 VC9 移植时常见BUG
- draft.js--富文本编辑器框架的实践(一)
- kubernetes ingress路由配置http body大小限制,访问k8s服务的时候报错:413 Request Entity Too Large