对称加密之AES及压缩加密解密解压综合实战

 对称加密:就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密。密钥是控制加密及解密过程的指令。算法是一组规则,规定如何进行加密和解密。

因此加密的安全性不仅取决于加密算法本身,密钥管理的安全性更是重要。因为加密和解密都使用同一个密钥,如何把密钥安全地传递到解密者手上就成了必须要解决的问题。

由此可见密钥传递也是比较重要的一环,一般都是通过对密钥二次加密的方式,进行密钥的传输

加密实现代码:


  1. public static byte[] encryptStringToBytes_AES(byte[] fileContentBytes, byte[] Key, byte[] IV)  
  2. {  
  3.     // Check arguments.  
  4.     if (fileContentBytes == null || fileContentBytes.Length <= 0)  
  5.         throw new ArgumentNullException("plainText");  
  6.     if (Key == null || Key.Length <= 0)  
  7.         throw new ArgumentNullException("Key");  
  8.     if (IV == null || IV.Length <= 0)  
  9.         throw new ArgumentNullException("IV");  
  10.     MemoryStream msEncrypt = null;  
  11.     AesCryptoServiceProvider aesAlg = null;  
  12.     try  
  13.     {  
  14.         aesAlg = new AesCryptoServiceProvider();  
  15.    
  16.         aesAlg.Padding = PaddingMode.PKCS7;  
  17.         aesAlg.Key = Key;  
  18.         aesAlg.IV = IV;  
  19.    
  20.         ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);  
  21.    
  22.         msEncrypt = new MemoryStream();  
  23.         using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))  
  24.         {  
  25.             csEncrypt.Write(fileContentBytes, 0, fileContentBytes.Length);  
  26.             csEncrypt.FlushFinalBlock();  
  27.         }  
  28.     }  
  29.     catch (Exception ex)  
  30.     {  
  31.    
  32.     }  
  33.     finally  
  34.     {  
  35.         if (aesAlg != null)  
  36.             aesAlg.Clear();  
  37.     }  
  38.     return msEncrypt.ToArray();  

解密代码实现:


  1. public static byte[] decryptBytes(byte[] cipherText, byte[] Key, byte[] IV)  
  2. {  
  3.     if (cipherText == null || cipherText.Length <= 0)  
  4.         throw new ArgumentNullException("cipherText");  
  5.     if (Key == null || Key.Length <= 0)  
  6.         throw new ArgumentNullException("Key");  
  7.     if (IV == null || IV.Length <= 0)  
  8.         throw new ArgumentNullException("IV");  
  9.     AesCryptoServiceProvider aesAlg = null;  
  10.     byte[] buffer = null;  
  11.     try  
  12.     {  
  13.         using (aesAlg = new AesCryptoServiceProvider())  
  14.         {  
  15.             aesAlg.Padding = PaddingMode.PKCS7;  
  16.             aesAlg.Key = Key;  
  17.             aesAlg.IV = IV;  
  18.             ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);  
  19.    
  20.             using (MemoryStream msDecrypt = new MemoryStream(cipherText))  
  21.             {  
  22.                 CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read);  
  23.                 byte[] tempbuffer = new byte[cipherText.Length];  
  24.                 int totalBytesRead = csDecrypt.Read(tempbuffer, 0, tempbuffer.Length);  
  25.                 buffer = tempbuffer.Take(totalBytesRead).ToArray();  
  26.             }  
  27.         }  
  28.     }  
  29.     catch (Exception ex)  
  30.     {  
  31.    
  32.     }  
  33.     finally  
  34.     {  
  35.         if (aesAlg != null)  
  36.             aesAlg.Clear();  
  37.     }  
  38.     return buffer;  

客户端加密解密文本文件实战:


  1. /// <summary> 
  2. /// 加密解密  
  3. /// </summary> 
  4. private static void _EncryptAndDecrypt()  
  5. {  
  6.     ASCIIEncoding asciiEnc = new ASCIIEncoding();  
  7.     byte[] initVectorBytes = asciiEnc.GetBytes("@1B2c3D4e5F6g7H8");  
  8.    
  9.     //Randomly generate or Book key - key K2 - Key to encrypt xml content  
  10.     string keyK2 = Generator.RandomString(10);  
  11.     //Generate the 128 bit string using MD5 for key K2  
  12.     MD5 hashProvider = MD5.Create();  
  13.     byte[] md5EncryptedKeyK2 = hashProvider.ComputeHash(asciiEnc.GetBytes(keyK2));  
  14.    
  15.     string filename = "NewTextDocument.txt";  
  16.     string filepath = Environment.CurrentDirectory + "" + filename;  
  17.    
  18.     byte[] Content = Encryption.encryptStringToBytes_AES(File.ReadAllBytes(filepath), md5EncryptedKeyK2, initVectorBytes);  
  19.     string encryptfilepath = Environment.CurrentDirectory + "encrypt" + filename;  
  20.     File.WriteAllBytes(encryptfilepath, Content);  
  21.    
  22.     byte[] decryptContent = Encryption.decryptBytes(File.ReadAllBytes(encryptfilepath), md5EncryptedKeyK2, initVectorBytes);  
  23.     string decryptfilepath = Environment.CurrentDirectory + "decrypt" + filename;  
  24.     File.WriteAllBytes(decryptfilepath, decryptContent);  
  25.    

压缩解压:


  1. string filename = "NewTextDocument.txt";  
  2. string filepath = Environment.CurrentDirectory + "" + filename;  
  3. string zipfilepath = Environment.CurrentDirectory + "NewTextDocument.zip";  
  4. using (ZipFile contentZip = new ZipFile())  
  5. {  
  6.     //压缩  
  7.     contentZip.AlternateEncoding = Encoding.GetEncoding("iso-8859-1");  
  8.     contentZip.AlternateEncodingUsage = ZipOption.Always;  
  9.     ZipEntry contentFile = contentZip.AddEntry(filename, File.ReadAllBytes(filepath));  
  10.     contentZip.Save(zipfilepath);  
  11.    
  12.    
  13.     //解压  
  14.     contentZip.ExtractAll(Environment.CurrentDirectory);  

压缩加密解密解压:


  1. string filename = "NewTextDocument.zip";  
  2.    
  3.            string filepath = Environment.CurrentDirectory + "" + filename;  
  4.            string zipfilepath = Environment.CurrentDirectory + "" + filename;  
  5.    
  6.            ZipFile contentZip = new ZipFile();  
  7.    
  8.            contentZip.AlternateEncoding = Encoding.GetEncoding("iso-8859-1");  
  9.            contentZip.AlternateEncodingUsage = ZipOption.Always;  
  10.            var bytecontent = File.ReadAllBytes(Environment.CurrentDirectory + "NewTextDocument.txt");  
  11.            ZipEntry contentFile = contentZip.AddEntry("NewTextDocument.txt", bytecontent);  
  12.            contentZip.Save(zipfilepath);  
  13.    
  14.            ASCIIEncoding asciiEnc = new ASCIIEncoding();  
  15.            byte[] initVectorBytes = asciiEnc.GetBytes("@1B2c3D4e5F6g7H8");  
  16.    
  17.            //Randomly generate or Book key - key K2 - Key to encrypt xml content  
  18.            string keyK2 = Generator.RandomString(10);  
  19.            //Generate the 128 bit string using MD5 for key K2  
  20.            MD5 hashProvider = MD5.Create();  
  21.            byte[] md5EncryptedKeyK2 = hashProvider.ComputeHash(asciiEnc.GetBytes(keyK2));  
  22.    
  23.            byte[] Content = Encryption.encryptStringToBytes_AES(File.ReadAllBytes(filepath), md5EncryptedKeyK2, initVectorBytes);  
  24.            string encryptfilepath = Environment.CurrentDirectory + "encrypt" + filename;  
  25.            File.WriteAllBytes(encryptfilepath, Content);  
  26.    
  27.            byte[] decryptContent = Encryption.decryptBytes(File.ReadAllBytes(encryptfilepath), md5EncryptedKeyK2, initVectorBytes);  
  28.            string decryptfilepath = Environment.CurrentDirectory + "decrypt" + filename;  
  29.            File.WriteAllBytes(decryptfilepath, decryptContent);  
  30.    
  31.            contentZip.ExtractAll(Environment.CurrentDirectory + "unzipdecrypt");  
  32.            string key = Convert.ToBase64String(md5EncryptedKeyK2);  
  33.            string iv = Convert.ToBase64String(initVectorBytes);  
  34.            Console.WriteLine(key);  
  35.            Console.WriteLine(iv);  
  36.    
  37.            byte[] decryptContent1 = Encryption.decryptBytes(File.ReadAllBytes(encryptfilepath), Convert.FromBase64String(key), Convert.FromBase64String(iv));  
  38.            string decryptfilepath1 = Environment.CurrentDirectory + "decrypt1" + filename;  
  39.    
  40.            contentZip.ExtractAll(Environment.CurrentDirectory + "unzipdecrypt1");  
  41.    
  42.            File.WriteAllBytes(decryptfilepath1, decryptContent1); 

 

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索算法
, 解密
, 加密
, c#和ae问题
, byte
, aes对称加密解密
, 密钥
, 安全性
, aes解密
, 对称
, AES加解密
, AES对称加密
AES对称解密
c aes加密解密、java aes加密解密算法、在线aes加密解密工具、android aes加密解密、aes在线加密解密,以便于您获取更多的相关知识。

时间: 2024-10-31 12:46:51

对称加密之AES及压缩加密解密解压综合实战的相关文章

最&quot;贱&quot;黑客 把文件压缩 再卖解压密码

[IT168 评论]我辛辛苦苦黑掉了你的电脑,还辛辛苦苦地把你的文件都压缩了.我加班加点,这么拼命,你不给钱就想要回密码,有这样的道理吗?你的内心难道不感到羞愧吗?你的良知难道不煎熬吗?不服来辩! 这大概就是"勒索黑客"的内心独白吧. 本文讲的是 :  最"贱"黑客 把文件压缩 再卖解压密码  ,   其实从2015年开始,黑客勒索就已经成为了一种主流的黑色产业.让人愤怒的是:这个行业经过几年的蓬勃发展,居然还分出了流派. "学院派" "

Linux下打包压缩war、解压war包和jar命令

环境 RedHat Linux 9 + VWWare 8.0 + SSH 3.2.9 + Putty 0.62 问题 Linux下打包压缩war.解压war包和jar命令 解决 把project_a文件夹下的文件打包成project.war 1.打包 jar - xvf project.war /project_a -c   创建war包 -v   显示过程信息 -f   指 定 JAR文件名,通常这个参数是必须的 -M  不产生所有项的清单 (MANIFEST]文件,此参数会忽略 -m参数 -

不可预料的压缩文件末端解压出错解决方法

"不可预料的压缩文件末端"多出现于压缩文件未下载完成,由于服务器失去响应,导致系统误以为文件已经下载完毕,将不完整的文件当成了完整的.建议把文件删除了重新下载,如果始终有问题则是资源的问题.不可预料的压缩文件末端解压出错的解决办法如下: 第一步:下载安装"Advanced RAR Repair"程序. 第二步:下载解压缩后,双击打开"Advanced RAR Repair"程序. 第三步:在"选择RAR或自解压文档进行修复"项

Java服务端压缩GZIP IOS解压问题

问题描述 Java服务端压缩GZIP IOS解压问题 在Java端用什么方法加压GZIP 在IOS端能解压出来 IOS用libz库方式解压的 求大神解答..找了很多种压缩方式都不行 IOS一直解压不出来 解决方案 iOS与Java服务器GZip压缩问题iOS与Java服务器GZip压缩问题iOS与Java服务器GZip压缩问题 解决方案二: 一般都是用标准的gzip压缩格式 各种平台都是一样的 你要看看java是否压缩正确了 用其它工具能否解压成功

使用java基础类实现zip压缩和zip解压工具类分享_java

使用java基础类写的一个简单的zip压缩解压工具类 复制代码 代码如下: package sun.net.helper; import java.io.*;import java.util.logging.Logger;import java.util.zip.*; public class ZipUtil {    private final static Logger logger = Logger.getLogger(ZipUtil.class.getName());    privat

Linux中zip压缩与unzip解压用法详解

一般来说zip比较通用,不管在windows下还是在linux下,对zip都能够轻松的实现压缩与解压. 下面是比较常用的两个个压缩命令以及解压命令.  压缩 zip MyPackge.zip -r /var/test/ 将 /var/test/ 目录中的所有所有文件,包括子文件夹及文件一起压缩为 MyPackge.zip -r 表示递归子目录 解压 unzip MyPackge.zip -d /var/test2/ 将 MyPackge.zip 解压到 /var/test2/ 目录中 不指定的话

分卷压缩和分卷解压

分卷压缩: 我们知道,有些网站,比如csdn,上传资源的时候有大小的限制,那如果说我上传的超过该限制,就比较麻烦了. 解决方案:压缩软件自带的分卷压缩功能,以WinRAR为例 右击文件->添加压缩文件->(左下角)压缩分卷大小,字节->确定 压缩分卷大小,字节的值可以显示为600kb,2m等,要带单位.     分卷解压: 那么我们传上去了,比如01.rar,02.rar,03.rar. 那么当我们下载01.rar的时候,解压,会报错:"你必须要有下列压缩分卷才能继续解压&qu

AIX上压缩文件的解压tar.Z tar.gz tgz zip

在AIX上最常见的压缩文件就是.tar压缩格式的文件了.  而除了tar文件以外,有时会遇到数据是用其它的压缩文件格式,所以偶顺手整理了一些常见的压缩文件格式,在AIX要怎么解压缩 : ·    .tar.Z file format o  压缩 § # compress filename.tar o  解压 § # zcat filename.tar.Z | tar -xvf - ·    .tar.gz file format o  压缩 § # tar cvf - folder | gzip

压缩文件无法解压-PGM9.6模拟狗的压缩文件怎么无法解压啊?

问题描述 PGM9.6模拟狗的压缩文件怎么无法解压啊? 今天刚刚在这边下载到的PGM9.6模拟狗的压缩文件怎么无法解压啊?有哪位大师帮帮忙回答一下