手机
当前位置:查字典教程网 >电脑 >电脑安全教程 >对称加密之AES及压缩加密解密解压综合实战
对称加密之AES及压缩加密解密解压综合实战
摘要:对称加密:就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密。密钥是控制加密及解密过程的指令。算法是一组规则,规定如何进行加密和解...

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

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

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

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

加密实现代码:

public static byte[] encryptStringToBytes_AES(byte[] fileContentBytes, byte[] Key, byte[] IV) { // Check arguments. if (fileContentBytes == null || fileContentBytes.Length <= 0) throw new ArgumentNullException("plainText"); if (Key == null || Key.Length <= 0) throw new ArgumentNullException("Key"); if (IV == null || IV.Length <= 0) throw new ArgumentNullException("IV"); MemoryStream msEncrypt = null; AesCryptoServiceProvider aesAlg = null; try { aesAlg = new AesCryptoServiceProvider(); aesAlg.Padding = PaddingMode.PKCS7; aesAlg.Key = Key; aesAlg.IV = IV; ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV); msEncrypt = new MemoryStream(); using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)) { csEncrypt.Write(fileContentBytes, 0, fileContentBytes.Length); csEncrypt.FlushFinalBlock(); } } catch (Exception ex) { } finally { if (aesAlg != null) aesAlg.Clear(); } return msEncrypt.ToArray(); }

解密代码实现:

public static byte[] decryptBytes(byte[] cipherText, byte[] Key, byte[] IV) { if (cipherText == null || cipherText.Length <= 0) throw new ArgumentNullException("cipherText"); if (Key == null || Key.Length <= 0) throw new ArgumentNullException("Key"); if (IV == null || IV.Length <= 0) throw new ArgumentNullException("IV"); AesCryptoServiceProvider aesAlg = null; byte[] buffer = null; try { using (aesAlg = new AesCryptoServiceProvider()) { aesAlg.Padding = PaddingMode.PKCS7; aesAlg.Key = Key; aesAlg.IV = IV; ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV); using (MemoryStream msDecrypt = new MemoryStream(cipherText)) { CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read); byte[] tempbuffer = new byte[cipherText.Length]; int totalBytesRead = csDecrypt.Read(tempbuffer, 0, tempbuffer.Length); buffer = tempbuffer.Take(totalBytesRead).ToArray(); } } } catch (Exception ex) { } finally { if (aesAlg != null) aesAlg.Clear(); } return buffer; }

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

/// <summary> /// 加密解密 /// </summary> private static void _EncryptAndDecrypt() { ASCIIEncoding asciiEnc = new ASCIIEncoding(); byte[] initVectorBytes = asciiEnc.GetBytes("@1B2c3D4e5F6g7H8"); //Randomly generate or Book key - key K2 - Key to encrypt xml content string keyK2 = Generator.RandomString(10); //Generate the 128 bit string using MD5 for key K2 MD5 hashProvider = MD5.Create(); byte[] md5EncryptedKeyK2 = puteHash(asciiEnc.GetBytes(keyK2)); string filename = "NewTextDocument.txt"; string filepath = Environment.CurrentDirectory + "" + filename; byte[] Content = Encryption.encryptStringToBytes_AES(File.ReadAllBytes(filepath), md5EncryptedKeyK2, initVectorBytes); string encryptfilepath = Environment.CurrentDirectory + "encrypt" + filename; File.WriteAllBytes(encryptfilepath, Content); byte[] decryptContent = Encryption.decryptBytes(File.ReadAllBytes(encryptfilepath), md5EncryptedKeyK2, initVectorBytes); string decryptfilepath = Environment.CurrentDirectory + "decrypt" + filename; File.WriteAllBytes(decryptfilepath, decryptContent); }

压缩解压:

string filename = "NewTextDocument.txt"; string filepath = Environment.CurrentDirectory + "" + filename; string zipfilepath = Environment.CurrentDirectory + "NewTextDocument.zip"; using (ZipFile contentZip = new ZipFile()) { //压缩 contentZip.AlternateEncoding = Encoding.GetEncoding("iso-8859-1"); contentZip.AlternateEncodingUsage = ZipOption.Always; ZipEntry contentFile = contentZip.AddEntry(filename, File.ReadAllBytes(filepath)); contentZip.Save(zipfilepath); //解压 contentZip.ExtractAll(Environment.CurrentDirectory); }

压缩加密解密解压:

string filename = "NewTextDocument.zip"; string filepath = Environment.CurrentDirectory + "" + filename; string zipfilepath = Environment.CurrentDirectory + "" + filename; ZipFile contentZip = new ZipFile(); contentZip.AlternateEncoding = Encoding.GetEncoding("iso-8859-1"); contentZip.AlternateEncodingUsage = ZipOption.Always; var bytecontent = File.ReadAllBytes(Environment.CurrentDirectory + "NewTextDocument.txt"); ZipEntry contentFile = contentZip.AddEntry("NewTextDocument.txt", bytecontent); contentZip.Save(zipfilepath); ASCIIEncoding asciiEnc = new ASCIIEncoding(); byte[] initVectorBytes = asciiEnc.GetBytes("@1B2c3D4e5F6g7H8"); //Randomly generate or Book key - key K2 - Key to encrypt xml content string keyK2 = Generator.RandomString(10); //Generate the 128 bit string using MD5 for key K2 MD5 hashProvider = MD5.Create(); byte[] md5EncryptedKeyK2 = puteHash(asciiEnc.GetBytes(keyK2)); byte[] Content = Encryption.encryptStringToBytes_AES(File.ReadAllBytes(filepath), md5EncryptedKeyK2, initVectorBytes); string encryptfilepath = Environment.CurrentDirectory + "encrypt" + filename; File.WriteAllBytes(encryptfilepath, Content); byte[] decryptContent = Encryption.decryptBytes(File.ReadAllBytes(encryptfilepath), md5EncryptedKeyK2, initVectorBytes); string decryptfilepath = Environment.CurrentDirectory + "decrypt" + filename; File.WriteAllBytes(decryptfilepath, decryptContent); contentZip.ExtractAll(Environment.CurrentDirectory + "unzipdecrypt"); string key = Convert.ToBase64String(md5EncryptedKeyK2); string iv = Convert.ToBase64String(initVectorBytes); Console.WriteLine(key); Console.WriteLine(iv); byte[] decryptContent1 = Encryption.decryptBytes(File.ReadAllBytes(encryptfilepath), Convert.FromBase64String(key), Convert.FromBase64String(iv)); string decryptfilepath1 = Environment.CurrentDirectory + "decrypt1" + filename; contentZip.ExtractAll(Environment.CurrentDirectory + "unzipdecrypt1"); File.WriteAllBytes(decryptfilepath1, decryptContent1);

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

常用的网站漏洞扫描工具小结

掌握恶意流氓软件的传播途径

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

rootkits病毒的原理介绍以及解决办法

交换机遭遇DDoS攻击该如何来解决?

https加密也被破解 HEIST攻击从加密数据获取明文

phpddos流量攻击预防方法

如何正确对待通用安全漏洞评分系统(CVSS)

Win8系统安全模式和系统性能技巧

屏蔽U盘病毒运行的方法

精品推荐
分类导航