using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
namespace IoTIntegrationPlatform.Common
{
///
/// AES加解密
///
public static class AESHelper
{
///
/// AES加密
///
/// 明文
/// 密钥
///
public static byte[] Encrypt(string encryptStr, string key)
{
//byte[] keyArray =Encoding.Default.GetBytes(key);
//byte[] toEncryptArray = Encoding.Default.GetBytes(encryptStr);
//RijndaelManaged rDel = new RijndaelManaged();
//rDel.Key = keyArray;
////rDel.KeySize = 128;
//rDel.Mode = CipherMode.ECB;
//rDel.Padding = PaddingMode.PKCS7;
//ICryptoTransform cTransform = rDel.CreateEncryptor();
//byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
//return Encoding.Default.GetString(resultArray);
AesCryptoServiceProvider aes = new AesCryptoServiceProvider
{
Key = Encoding.Default.GetBytes(key),
Mode = CipherMode.ECB,
Padding = PaddingMode.PKCS7
};
using (MemoryStream ms = new MemoryStream())
{
byte[] bytes = Encoding.Default.GetBytes(encryptStr);
using (CryptoStream cs = new CryptoStream(ms, aes.CreateEncryptor(aes.Key, aes.IV), CryptoStreamMode.Write))
{
cs.Write(bytes, 0, bytes.Count());
cs.FlushFinalBlock();
}
return ms.ToArray();
}
}
///
/// AES解密
///
/// 密文
/// 密钥
///
public static byte[] Decrypt(byte[] bytes, string key)
{
//byte[] keyArray = Encoding.Default.GetBytes(key);
//byte[] toEncryptArray = Encoding.Default.GetBytes(decryptStr);
//RijndaelManaged rDel = new RijndaelManaged();
//rDel.Key = keyArray;
//// rDel.KeySize = 128;
//rDel.Mode = CipherMode.ECB;
//rDel.Padding = PaddingMode.PKCS7;
//ICryptoTransform cTransform = rDel.CreateDecryptor();
//byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
//return Encoding.Default.GetString(resultArray);
AesCryptoServiceProvider aes = new AesCryptoServiceProvider();
aes.Key = Encoding.Default.GetBytes(key);
aes.Mode = CipherMode.ECB;
aes.Padding = PaddingMode.PKCS7;
using (MemoryStream ms = new MemoryStream())
{
//byte[] bytes = Convert.FromBase64String(decryptStr);
using (CryptoStream cs = new CryptoStream(ms, aes.CreateDecryptor(aes.Key, aes.IV), CryptoStreamMode.Write))
{
cs.Write(bytes, 0, bytes.Count());
cs.FlushFinalBlock();
}
return ms.ToArray();
}
}
///
/// 2进制转16进制
///
public static String Hex_2To16(Byte[] bytes)
{
String hexString = String.Empty;
Int32 iLength = 65535;
if (bytes != null)
{
StringBuilder strB = new StringBuilder();
if (bytes.Length < iLength)
{
iLength = bytes.Length;
}
for (int i = 0; i < iLength; i++)
{
strB.Append(bytes[i].ToString("X2"));
}
hexString = strB.ToString();
}
return hexString;
}
///
/// 16进制转2进制
///
public static Byte[] Hex_16To2(String hexString)
{
if ((hexString.Length % 2) != 0)
{
hexString += " ";
}
Byte[] returnBytes = new Byte[hexString.Length / 2];
for (Int32 i = 0; i < returnBytes.Length; i++)
{
returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
}
return returnBytes;
}
}
}