1. 程式人生 > >C#實現AES加密和解密函式

C#實現AES加密和解密函式

AES簡介

AES(The Advanced Encryption Standard)是美國國家標準與技術研究所用於加密電子資料的規範。它被預期能成為人們公認的加密包括金融、電信和政府數字資訊的方法。

AES 是一個新的可以用於保護電子資料的加密演算法。明確地說,AES 是一個迭代的、對稱金鑰分組的密碼,它可以使用128、192 和 256 位金鑰,並且用 128 位(16位元組)分組加密和解密資料。與公共金鑰密碼使用金鑰對不同,對稱金鑰密碼使用相同的金鑰加密和解密資料。通過分組密碼返回的加密資料 的位數與輸入資料相同。迭代加密使用一個迴圈結構,在該迴圈中重複置換(permutations )和替換(substitutions)輸入資料。Figure 1 顯示了 AES 用192位金鑰對一個16位位元組資料塊進行加密和解密的情形。

AES加密函式

複製程式碼
publicstaticstring Encrypt(string toEncrypt) {
    byte[] keyArray = UTF8Encoding.UTF8.GetBytes("12345678901234567890123456789012");
    byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);

    RijndaelManaged rDel =new RijndaelManaged();
    rDel.Key = keyArray;
    rDel.Mode = CipherMode.ECB;
    rDel.Padding 
= PaddingMode.PKCS7; ICryptoTransform cTransform = rDel.CreateEncryptor(); byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); return Convert.ToBase64String(resultArray, 0, resultArray.Length); }
複製程式碼

AES解密函式

複製程式碼
publicstaticstring Decrypt(string toDecrypt) {
    
byte[] keyArray = UTF8Encoding.UTF8.GetBytes("12345678901234567890123456789012"); byte[] toEncryptArray = Convert.FromBase64String(toDecrypt); RijndaelManaged rDel =new RijndaelManaged(); rDel.Key = keyArray; rDel.Mode = CipherMode.ECB; rDel.Padding = PaddingMode.PKCS7; ICryptoTransform cTransform = rDel.CreateDecryptor(); byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); return UTF8Encoding.UTF8.GetString(resultArray); }