国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 產品 > 電腦 > 正文

對稱加密之AES及壓縮加密解密解壓綜合實戰

2020-04-09 19:39:59
字體:
來源:轉載
供稿:網友

 對稱加密:就是采用這種加密方法的雙方使用方式用同樣的密鑰進行加密和解密。密鑰是控制加密及解密過程的指令。算法是一組規則,規定如何進行加密和解密。

因此加密的安全性不僅取決于加密算法本身,密鑰管理的安全性更是重要。因為加密和解密都使用同一個密鑰,如何把密鑰安全地傳遞到解密者手上就成了必須要解決的問題。

對稱加密之AES及壓縮加密解密解壓綜合實戰

由此可見密鑰傳遞也是比較重要的一環,一般都是通過對密鑰二次加密的方式,進行密鑰的傳輸

加密實現代碼:

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 = hashProvider.ComputeHash(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 = hashProvider.ComputeHash(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); 

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 柯坪县| 陈巴尔虎旗| 故城县| 淮安市| 吉木乃县| 浦北县| 礼泉县| 项城市| 阳曲县| 乐清市| 广汉市| 东莞市| 曲水县| 曲水县| 扬州市| 大丰市| 广元市| 东光县| 会东县| 鹤壁市| 江北区| 江永县| 沽源县| 塔城市| 寿阳县| 咸阳市| 仁怀市| 芒康县| 芒康县| 利津县| 广平县| 罗源县| 东丽区| 巩义市| 达尔| 昌江| 女性| 收藏| 陇川县| 蓝田县| 区。|