using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Security.Cryptography; using System.IO; namespace IOM_cs { //AES对称加密算法类 public class CryptoHelper { //AES密文长度=(原文长度/16)*16+16; //适用于原文长度<64 //AES加密算法 public static string Encrypt(string toEncrypt) { try { if (toEncrypt == "" || toEncrypt == null) return null; byte[] keyArray = UTF8Encoding.UTF8.GetBytes("12345678901234567890123456789012"); //32*8=256位密钥 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; if (toEncryptArray.Length < 64) { resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); } else { byte[] toEncryptArray1 = new byte[63]; Array.Copy(toEncryptArray, toEncryptArray1, 63); resultArray = cTransform.TransformFinalBlock(toEncryptArray1, 0, toEncryptArray1.Length); } return Convert.ToBase64String(resultArray, 0, resultArray.Length); } catch (Exception ex) { System.Windows.Forms.MessageBox.Show("EncryptException" + ex.Message); return "-1"; } } //AES解密算法 public static string Decrypt(string toDecrypt) { if (toDecrypt == "" || toDecrypt == null) return null; 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); } } }