一言不合就上工程代码:
public class AESUtil {
public static string Key = "ILoveU";
/// <summary>
/// AES加密
/// </summary>
/// <param name="data">被加密的明文</param>
/// <param name="key">密钥</param>
/// <returns>密文</returns>
public static string AesEncrypt(String data) {
MemoryStream mStream = new MemoryStream();
RijndaelManaged aes = new RijndaelManaged();
byte[] plainBytes = Encoding.UTF8.GetBytes(data);
Byte[] bKey = new Byte[32];
Array.Copy(Encoding.UTF8.GetBytes(Key.PadRight(bKey.Length)), bKey, bKey.Length);
aes.Mode = CipherMode.ECB;
aes.Padding = PaddingMode.PKCS7;
aes.KeySize = 128;
//aes.Key = _key;
aes.Key = bKey;
//aes.IV = _iV;
CryptoStream cryptoStream = new CryptoStream(mStream, aes.CreateEncryptor(), CryptoStreamMode.Write);
try {
cryptoStream.Write(plainBytes, 0, plainBytes.Length);
cryptoStream.FlushFinalBlock();
return Convert.ToBase64String(mStream.ToArray());
}
finally {
cryptoStream.Close();
mStream.Close();
aes.Clear();
}
}
/// <summary>
/// AES解密
/// </summary>
/// <param name="data">被解密的密文</param>
/// <param name="key">密钥</param>
/// <returns>明文</returns>
public static string AesDecrypt(String data) {
Byte[] encryptedBytes = Convert.FromBase64String(data);
Byte[] bKey = new Byte[32];
Array.Copy(Encoding.UTF8.GetBytes(Key.PadRight(bKey.Length)), bKey, bKey.Length);
MemoryStream mStream = new MemoryStream(encryptedBytes);
//mStream.Write( encryptedBytes, 0, encryptedBytes.Length );
//mStream.Seek( 0, SeekOrigin.Begin );
RijndaelManaged aes = new RijndaelManaged();
aes.Mode = CipherMode.ECB;
aes.Padding = PaddingMode.PKCS7;
aes.KeySize = 128;
aes.Key = bKey;
//aes.IV = _iV;
CryptoStream cryptoStream = new CryptoStream(mStream, aes.CreateDecryptor(), CryptoStreamMode.Read);
try {
byte[] tmp = new byte[encryptedBytes.Length + 32];
int len = cryptoStream.Read(tmp, 0, encryptedBytes.Length + 32);
byte[] ret = new byte[len];
Array.Copy(tmp, 0, ret, 0, len);
return Encoding.UTF8.GetString(ret);
}
finally {
cryptoStream.Close();
mStream.Close();
aes.Clear();
}
}
/// <summary>
/// 解密H1
/// </summary>
/// <param name="h1"></param>
/// <returns></returns>
public static string Uh1(string h1, string code) {
return PassHelper.Decode(h1, code);
}
/// <summary>
/// <param name="pass">客户端 PC 密码明文</param>
/// <param name="privateMask">私有掩码</param>
/// <returns></returns>
/// 拼接密码
/// </summary>
public static string PassWord(string pass, string code, string privateMask) {
try {
if (!string.IsNullOrEmpty(pass) && !string.IsNullOrEmpty(code)) {
pass = PassHelper.Decode(pass, code);
JObject passObj = JsonConvert.DeserializeObject<JObject>(pass);
return (passObj["code"].ToEMD5() + AesDecrypt(privateMask) + Key).ToEMD5();
}
else {
return "";
}
}
catch (Exception) {
return "";
}
}
/// <summary>
/// <param name="pass">手机 密码明文</param>
/// <param name="privateMask">私有掩码</param>
/// <returns></returns>
/// 拼接密码
/// </summary>
public static string PassWords(string pass, string code, string privateMask) {
return (pass.ToEMD5() + AesDecrypt(privateMask) + Key).ToEMD5();
}
/// <summary>
/// 交易密码自动生成
/// </summary>
/// <param name="pass"></param>
/// <param name="privateMask"></param>
/// <returns></returns>
public static string tradPass(string pass, string privateMask) {
return (pass.ToEMD5() + AesDecrypt(privateMask) + Key).ToEMD5();
}
/// <summary>
/// MD5密码 交易密码自动生成
/// </summary>
/// <param name="pass"></param>
/// <param name="privateMask"></param>
/// <returns></returns>
public static string tradMd5Pass(string pass ,string privateMask) {
return (pass + AesDecrypt(privateMask) + Key).ToEMD5();
}
/// <summary>
/// 解密为明文
/// </summary>
/// <param name="pass"></param>
/// <param name="code"></param>
/// <returns></returns>
public static string Pass(string pass ,string code) {
try {
JObject passObj = JsonConvert.DeserializeObject<JObject>(PassHelper.Decode(pass, code));
return passObj["code"].ToEString();
}
catch (Exception) {
return "--------";
}
}
}