using System.Text;
using System.Security.Cryptography;
namespace MySystem
{
public class CryptHelper
{
///
/// aes加密
///
/// 加密字符串
/// 密钥
/// 向量
/// 加密模式
/// 填充模式
/// 加密后字符串
public static string AesEncrypt(string str, string key, string iv, string mode = "CBC", string padding = "PKCS7")
{
if (string.IsNullOrEmpty(str)) return null;
Byte[] toEncryptArray = Encoding.UTF8.GetBytes(str);
CipherMode cipherMode = CipherMode.CBC;
PaddingMode paddingMode = PaddingMode.PKCS7;
if(mode == "CBC") cipherMode = CipherMode.CBC;
if(mode == "ECB") cipherMode = CipherMode.ECB;
if(mode == "CFB") cipherMode = CipherMode.CFB;
if(mode == "CTS") cipherMode = CipherMode.CTS;
if(padding == "PKCS7") paddingMode = PaddingMode.PKCS7;
if(padding == "None") paddingMode = PaddingMode.None;
if(padding == "Zeros") paddingMode = PaddingMode.Zeros;
if(padding == "ISO10126") paddingMode = PaddingMode.ISO10126;
if(padding == "ANSIX923") paddingMode = PaddingMode.ANSIX923;
System.Security.Cryptography.RijndaelManaged rm = new System.Security.Cryptography.RijndaelManaged
{
Key = Encoding.UTF8.GetBytes(key),
IV = Encoding.UTF8.GetBytes(iv),
Mode = cipherMode,
Padding = paddingMode
};
System.Security.Cryptography.ICryptoTransform cTransform = rm.CreateEncryptor();
Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
string jsonData = Convert.ToBase64String(resultArray, 0, resultArray.Length);
return Convert.ToBase64String(Encoding.UTF8.GetBytes(jsonData));
}
}
}