using System;
using System.Text;
using System.Security.Cryptography;
namespace SQ12345_OutApi.Utility
{
public class EncryptHelper
{
private static readonly string AESKEY = "GHYU80DV3465QSFG";//16或者32位
private static readonly string DESKEY = "PORG56JK";//8位
///
/// AES加密
///
/// 要加密的字符串
/// 加密后的字符串
public static string EncryptAES(string data)
{
try
{
var aes = new RijndaelManaged();
byte[] bData = Encoding.UTF8.GetBytes(data);
aes.Key = Encoding.UTF8.GetBytes(AESKEY);
aes.IV = Encoding.UTF8.GetBytes(AESKEY);
aes.Mode = CipherMode.ECB;
aes.Padding = PaddingMode.PKCS7;
ICryptoTransform iCryptoTransform = aes.CreateEncryptor();
byte[] bResult = iCryptoTransform.TransformFinalBlock(bData, 0, bData.Length);
return Convert.ToBase64String(bResult); //返回base64加密;
//return ByteToHex(bResult); //返回十六进制数据;
}
catch
{
return "Encrypt Faild";
}
}
///
/// AES加密
///
/// 要加密的字符串
/// 密钥串(16位或32位)
/// 加密后的字符串
public static string EncryptAES(string data, string sKey)
{
try
{
var aes = new RijndaelManaged();
byte[] bData = Encoding.UTF8.GetBytes(data);
aes.Key = Encoding.UTF8.GetBytes(sKey);
aes.IV = Encoding.UTF8.GetBytes(sKey);
aes.Mode = CipherMode.ECB;
aes.Padding = PaddingMode.PKCS7;
ICryptoTransform iCryptoTransform = aes.CreateEncryptor();
byte[] bResult = iCryptoTransform.TransformFinalBlock(bData, 0, bData.Length);
return Convert.ToBase64String(bResult); //返回base64加密;
//return ByteToHex(bResult); //返回十六进制数据;
}
catch
{
return "Encrypt Faild";
}
}
///
/// AES解密
///
/// 要解密的字符串
/// 解密后的字符串
public static string DecryptAES(string data)
{
try
{
data = data.Replace(" ", "+"); //URL传参时应用,加密后字符串不含空格但含有+号,在通过URL传参时,+会被替换成空格
var aes = new RijndaelManaged();
byte[] bData = Convert.FromBase64String(data); //解密base64;
//byte[] bData = HexToByte(data); //16进制to byte[];
aes.Key = Encoding.UTF8.GetBytes(AESKEY);
aes.IV = Encoding.UTF8.GetBytes(AESKEY);
aes.Mode = CipherMode.ECB;
aes.Padding = PaddingMode.PKCS7;
ICryptoTransform iCryptoTransform = aes.CreateDecryptor();
byte[] bResult = iCryptoTransform.TransformFinalBlock(bData, 0, bData.Length);
return Encoding.UTF8.GetString(bResult);
}
catch
{
return "";
}
}
///
/// AES解密
///
/// 要解密的字符串
/// 密钥串(16位或32位字符串)
/// 解密后的字符串
public static string DecryptAES(string data, string sKey)
{
try
{
data = data.Replace(" ", "+"); //URL传参时应用,加密后字符串不含空格但含有+号,在通过URL传参时,+会被替换成空格
var aes = new RijndaelManaged();
byte[] bData = Convert.FromBase64String(data); //解密base64;
// byte[] bData = HexToByte(data); //16进制to byte[];
aes.Key = Encoding.UTF8.GetBytes(sKey);
aes.IV = Encoding.UTF8.GetBytes(sKey);
aes.Mode = CipherMode.ECB;
aes.Padding = PaddingMode.PKCS7;
ICryptoTransform iCryptoTransform = aes.CreateDecryptor();
byte[] bResult = iCryptoTransform.TransformFinalBlock(bData, 0, bData.Length);
return Encoding.UTF8.GetString(bResult);
}
catch (Exception e)
{
return "" ;
}
}
///
/// DES加密
///
/// 要加密的字符串
/// 加密后的字符串
public static string EncryptDES(string data)
{
try
{
DES des = new DESCryptoServiceProvider();
des.Mode = CipherMode.ECB;
des.Key = Encoding.UTF8.GetBytes(DESKEY);
des.IV = Encoding.UTF8.GetBytes(DESKEY);
byte[] bytes = Encoding.UTF8.GetBytes(data);
byte[] resultBytes = des.CreateEncryptor().TransformFinalBlock(bytes, 0, bytes.Length);
return Convert.ToBase64String(resultBytes); //密文以base64返回;(可根据实际需要返回16进制数据;)
//return ByteToHex(resultBytes);//十六位
}
catch
{
return "";
}
}
///
/// DES加密
///
/// 要加密的字符串
/// 密钥串(8位字符串)
/// 加密后的字符串
public static string EncryptDES(string data, string key)
{
try
{
DES des = new DESCryptoServiceProvider();
des.Mode = CipherMode.ECB;
des.Key = Encoding.UTF8.GetBytes(key);
des.IV = Encoding.UTF8.GetBytes(key);
byte[] bytes = Encoding.UTF8.GetBytes(data);
byte[] resultBytes = des.CreateEncryptor().TransformFinalBlock(bytes, 0, bytes.Length);
return Convert.ToBase64String(resultBytes); //密文以base64返回;(可根据实际需要返回16进制数据;)
// return ByteToHex(resultBytes);//十六位
}
catch
{
return "";
}
}
///
/// DES解密
///
/// 要解密的字符串
/// 解密后的字符串
public static string DecryptDES(string data)
{
try
{
//data = data.Replace(" ", "+"); //URL传参时应用,加密后字符串不含空格但含有+号,在通过URL传参时,+会被替换成空格
DES des = new DESCryptoServiceProvider();
des.Mode = CipherMode.ECB;
des.Key = Encoding.UTF8.GetBytes(DESKEY);
des.IV = Encoding.UTF8.GetBytes(DESKEY);
byte[] bytes = Convert.FromBase64String(data); //解密base64;
// byte[] bytes = HexToByte(data); //16进制to byte[];
byte[] resultBytes = des.CreateDecryptor().TransformFinalBlock(bytes, 0, bytes.Length);
return Encoding.UTF8.GetString(resultBytes);
}
catch
{
return "";
}
}
///
/// DES解密
///
/// 要解密的字符串
/// 密钥串(8位字符串)
/// 解密后的字符串
public static string DecryptDES(string data, string key)
{
try
{
//data = data.Replace(" ", "+"); //URL传参时应用,加密后字符串不含空格但含有+号,在通过URL传参时,+会被替换成空格
DES des = new DESCryptoServiceProvider();
des.Mode = CipherMode.ECB;
des.Key = Encoding.UTF8.GetBytes(key);
des.IV = Encoding.UTF8.GetBytes(key);
byte[] bytes = Convert.FromBase64String(data); //解密base64;
// byte[] bytes = HexToByte(data); //16进制to byte[];
byte[] resultBytes = des.CreateDecryptor().TransformFinalBlock(bytes, 0, bytes.Length);
return Encoding.UTF8.GetString(resultBytes);
}
catch
{
return "";
}
}
}
}