#region UrlEncoding
/// <summary>
/// aes加密 2.0 返回16 进制
/// </summary>
/// <param name="toEncrypt">字符长度必须大于32位</param>
/// <param name="key"></param>
/// <returns></returns>
public static string AESEncrypt2(string toEncrypt, string key)
{
key = key.Substring(0, 32);
key = key.PadRight(32, '@');
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);
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);
StringBuilder sb = new StringBuilder();
foreach (byte b in resultArray)
{
sb.AppendFormat("{0:X2}", b);
}
// return Convert.ToBase64String(resultArray, 0, resultArray.Length);
return sb.ToString();
}
/// <summary>
/// aes解密 2.0 由16进制解密
/// </summary>
/// <param name="toDecrypt"></param>
/// <param name="key"></param>
/// <returns></returns>
public static string AESDecrypt2(string toDecrypt, string key)
{
key = key.Substring(0, 32);
key = key.PadRight(32, '@');
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);
// byte[] toEncryptArray = Convert.FromBase64String(toDecrypt);
int halfInputLength = toDecrypt.Length / 2;
byte[] toEncryptArray = new byte[halfInputLength];
for (int x = 0; x < halfInputLength; x++)
{
int i = (Convert.ToInt32(toDecrypt.Substring(x * 2, 2), 16));
toEncryptArray[x] = (byte)i;
}
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);
}
/// <summary>
/// 根据传过来的参数获取参数的值 实例:saname=guzi&appid=abcde 。 如果key=saname 将获取到guzi
/// </summary>
/// <param name="parameter"></param>
/// <returns></returns>
public static string GetParameter(string parameter,string key)
{
var arr = parameter.Split('&');
foreach (var a in arr)
{
if (a.Split('=')[0].ToString() == key)
{
return a.Split('=')[1].ToString();
}
}
return "error";
}
#endregion
/// <summary>
/// aes加密 2.0 返回16 进制
/// </summary>
/// <param name="toEncrypt">字符长度必须大于32位</param>
/// <param name="key"></param>
/// <returns></returns>
public static string AESEncrypt2(string toEncrypt, string key)
{
key = key.Substring(0, 32);
key = key.PadRight(32, '@');
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);
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);
StringBuilder sb = new StringBuilder();
foreach (byte b in resultArray)
{
sb.AppendFormat("{0:X2}", b);
}
// return Convert.ToBase64String(resultArray, 0, resultArray.Length);
return sb.ToString();
}
/// <summary>
/// aes解密 2.0 由16进制解密
/// </summary>
/// <param name="toDecrypt"></param>
/// <param name="key"></param>
/// <returns></returns>
public static string AESDecrypt2(string toDecrypt, string key)
{
key = key.Substring(0, 32);
key = key.PadRight(32, '@');
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);
// byte[] toEncryptArray = Convert.FromBase64String(toDecrypt);
int halfInputLength = toDecrypt.Length / 2;
byte[] toEncryptArray = new byte[halfInputLength];
for (int x = 0; x < halfInputLength; x++)
{
int i = (Convert.ToInt32(toDecrypt.Substring(x * 2, 2), 16));
toEncryptArray[x] = (byte)i;
}
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);
}
/// <summary>
/// 根据传过来的参数获取参数的值 实例:saname=guzi&appid=abcde 。 如果key=saname 将获取到guzi
/// </summary>
/// <param name="parameter"></param>
/// <returns></returns>
public static string GetParameter(string parameter,string key)
{
var arr = parameter.Split('&');
foreach (var a in arr)
{
if (a.Split('=')[0].ToString() == key)
{
return a.Split('=')[1].ToString();
}
}
return "error";
}
#endregion