123 lines
3.7 KiB
C#
123 lines
3.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Security.Cryptography;
|
|
using System.Web;
|
|
|
|
namespace System
|
|
{
|
|
public static class EncryptHelper
|
|
{
|
|
/// <summary>
|
|
/// AES秘钥(强烈要求.json自定义取出)
|
|
/// </summary>
|
|
private const string AesKey = "OwenItc-*&$%RTj3";
|
|
|
|
/// <summary>
|
|
/// AES偏移向量(强烈要求.json自定义取出)
|
|
/// </summary>
|
|
private const string AesIV = "*&^KJ8a-Tj3*&$%R";
|
|
|
|
public static string AesEncrypt(string toEncryptString)
|
|
{
|
|
return AesEncrypt(toEncryptString, AesKey, AesIV);
|
|
}
|
|
|
|
/// <summary>
|
|
/// AES加密
|
|
/// </summary>
|
|
/// <param name="toEncryptString">待加密的明文</param>
|
|
/// <returns></returns>
|
|
public static string AesEncrypt(this string toEncryptString, string aesKey, string aesIV)
|
|
{
|
|
var rijndaelCipher = new RijndaelManaged
|
|
{
|
|
Mode = CipherMode.CBC,
|
|
Padding = PaddingMode.PKCS7,
|
|
KeySize = 128,
|
|
BlockSize = 128
|
|
};
|
|
|
|
var toEncryptBytes = Encoding.UTF8.GetBytes(toEncryptString);
|
|
var keyBytes = Encoding.UTF8.GetBytes(aesKey);
|
|
var ivBytes = Encoding.UTF8.GetBytes(aesIV);
|
|
|
|
rijndaelCipher.Key = keyBytes;
|
|
rijndaelCipher.IV = ivBytes;
|
|
|
|
ICryptoTransform transform = rijndaelCipher.CreateEncryptor();
|
|
byte[] cipherBytes = transform.TransformFinalBlock(toEncryptBytes, 0, toEncryptBytes.Length);
|
|
return Convert.ToBase64String(cipherBytes);
|
|
}
|
|
|
|
public static string AesDecrpt(string toDecrpt)
|
|
{
|
|
return AesDecrpt(toDecrpt, AesKey, AesIV);
|
|
}
|
|
/// <summary>
|
|
/// AES解密
|
|
/// </summary>
|
|
/// <param name="toDecrpt"></param>
|
|
/// <returns></returns>
|
|
public static string AesDecrpt(this string toDecrpt, string aesKey, string aesIV)
|
|
{
|
|
var key = Encoding.UTF8.GetBytes(aesKey);
|
|
var encryptedData = Convert.FromBase64String(toDecrpt);
|
|
var iv = Encoding.UTF8.GetBytes(aesIV);
|
|
|
|
var rDel = new RijndaelManaged
|
|
{
|
|
Key = key,
|
|
IV = iv,
|
|
Mode = CipherMode.CBC,
|
|
Padding = PaddingMode.PKCS7
|
|
};
|
|
|
|
var cTransform = rDel.CreateDecryptor();
|
|
var resultArray = cTransform.TransformFinalBlock(encryptedData, 0, encryptedData.Length);
|
|
|
|
return Encoding.UTF8.GetString(resultArray);
|
|
}
|
|
|
|
public static string UrlEncode(string toEncryptString)
|
|
{
|
|
if (string.IsNullOrEmpty(toEncryptString)) return null;
|
|
return HttpUtility.UrlEncode(AesEncrypt(toEncryptString), Encoding.UTF8);
|
|
}
|
|
|
|
public static string UrlDecode(string toEncryptString)
|
|
{
|
|
if (string.IsNullOrEmpty(toEncryptString)) return null;
|
|
return AesDecrpt(toEncryptString);
|
|
}
|
|
|
|
public static string Decode(string toEncryptString)
|
|
{
|
|
if (string.IsNullOrEmpty(toEncryptString)) return null;
|
|
return AesDecrpt(HttpUtility.UrlDecode(toEncryptString, Encoding.UTF8));
|
|
}
|
|
|
|
public static string GetMd5(this string source)
|
|
{
|
|
if (string.IsNullOrEmpty(source)) return null;
|
|
|
|
MD5 md = MD5.Create();
|
|
|
|
byte[] bytes = md.ComputeHash(System.Text.Encoding.UTF8.GetBytes(source));
|
|
|
|
string dec = null;
|
|
|
|
foreach (byte b in bytes)
|
|
{
|
|
|
|
dec += b.ToString("x2");
|
|
|
|
}
|
|
|
|
return dec;
|
|
}
|
|
}
|
|
}
|
|
|