<?php
//https://my.oschina.net/u/3403514/blog/1809008
class Aes
{
//密鑰 須是16位
public $key ;
/**
* 解密字符串
* @param string $data 字符串
* @return string
*/
public function __construct()
{
$this->key = 'r!Q9XE0e^yFIWO0h';
}
/**
* 解密字符串
* @param string $strr
* @return string
*/
public function decode($str)
{
return openssl_decrypt(base64_decode($str),"AES-128-ECB",$this->key,OPENSSL_RAW_DATA, "");
}
/**
* 加密字符串
* @param string $str
* @return string
*/
public function encode($str)
{
//return openssl_encrypt('ABCDEFG', 'AES-128-ECB', $this->key, 0, "");
return base64_encode(openssl_encrypt($str,"AES-128-ECB",$this->key,OPENSSL_RAW_DATA, ""));
}
}
private const string sKey = "r!Q9XE0e^yFIWO0h";
#region RijndaelManaged加密
/// <summary>
/// 加密數據
/// from https://www.cnblogs.com/nsky/p/4481953.html
/// </summary>
/// <param name="Text">要加密的內容</param>
/// <param name="sKey">key,必須爲32位</param>
/// <returns></returns>
public static string RiEncrypt(string Text, string sKey)
{
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(sKey);
//TripleDESCryptoServiceProvider
RijndaelManaged encryption = new RijndaelManaged();
encryption.Key = keyArray;
encryption.Mode = CipherMode.ECB;
encryption.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = encryption.CreateEncryptor();
byte[] _EncryptArray = UTF8Encoding.UTF8.GetBytes(Text);
byte[] resultArray = cTransform.TransformFinalBlock(_EncryptArray, 0, _EncryptArray.Length);
return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}
#endregion
#region =======RijndaelManaged解密========
/// <summary>
/// 解密數據
/// from https://www.cnblogs.com/nsky/p/4481953.html
/// </summary>
/// <param name="Text"></param>
/// <param name="sKey"></param>
/// <returns></returns>
public static string RiDecrypt(string Text, string sKey)
{
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(sKey);
RijndaelManaged decipher = new RijndaelManaged();
decipher.Key = keyArray;
decipher.Mode = CipherMode.ECB;
decipher.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = decipher.CreateDecryptor();
byte[] _EncryptArray = Convert.FromBase64String(Text);
byte[] resultArray = cTransform.TransformFinalBlock(_EncryptArray, 0, _EncryptArray.Length);
return UTF8Encoding.UTF8.GetString(resultArray);
}
#endregion