初始化
This commit is contained in:
113
SERVER/LIB/AESHELP.cs
Normal file
113
SERVER/LIB/AESHELP.cs
Normal file
@@ -0,0 +1,113 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Security.Cryptography;
|
||||
using System.IO;
|
||||
using Serilog;
|
||||
using Serilog.Events;
|
||||
|
||||
namespace SERVER.LIB
|
||||
{
|
||||
/// <summary>
|
||||
/// 暂未使用
|
||||
/// </summary>
|
||||
public class AESHELP
|
||||
{
|
||||
/// <summary>
|
||||
/// AES解密
|
||||
/// <param name="input">密文字节数组</param>
|
||||
/// <param name="key">密钥(16位)</param>
|
||||
/// <returns>返回解密后的字符串</returns>
|
||||
/// </summary>
|
||||
public static string DecryptByAES(string input, string key)
|
||||
{
|
||||
byte[] inputBytes = Convert.FromBase64String(input);
|
||||
byte[] keyBytes = Encoding.UTF8.GetBytes(key.Substring(0, 16));
|
||||
using (AesCryptoServiceProvider aesAlg = new AesCryptoServiceProvider())
|
||||
{
|
||||
aesAlg.Padding = PaddingMode.PKCS7;
|
||||
aesAlg.Mode = CipherMode.ECB;
|
||||
aesAlg.Key = keyBytes;
|
||||
aesAlg.IV = keyBytes;
|
||||
ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
|
||||
using (MemoryStream msEncrypt = new MemoryStream(inputBytes))
|
||||
{
|
||||
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, decryptor, CryptoStreamMode.Read))
|
||||
{
|
||||
using (StreamReader srEncrypt = new StreamReader(csEncrypt))
|
||||
{
|
||||
return srEncrypt.ReadToEnd();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// AES加密算法
|
||||
/// </summary>
|
||||
/// <param name="input">明文字符串</param>
|
||||
/// <param name="key">密钥(16位)</param>
|
||||
/// <returns>字符串</returns>
|
||||
public static string EncryptByAES(string input, string key)
|
||||
{
|
||||
byte[] keyBytes = Encoding.UTF8.GetBytes(key.Substring(0, 16));
|
||||
using (AesCryptoServiceProvider aesAlg = new AesCryptoServiceProvider())
|
||||
{
|
||||
aesAlg.Padding = PaddingMode.PKCS7;
|
||||
aesAlg.Mode = CipherMode.ECB;
|
||||
aesAlg.Key = keyBytes;
|
||||
aesAlg.IV = keyBytes;
|
||||
ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
|
||||
using (MemoryStream msEncrypt = new MemoryStream())
|
||||
{
|
||||
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
|
||||
{
|
||||
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
|
||||
{
|
||||
swEncrypt.Write(input);
|
||||
}
|
||||
byte[] bytes = msEncrypt.ToArray();
|
||||
var ddc = Convert.ToBase64String(bytes);
|
||||
|
||||
byte[] inputBytes = Convert.FromBase64String(ddc);
|
||||
return ddc;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 将指定的16进制字符串转换为byte数组
|
||||
/// </summary>
|
||||
/// <param name="s">16进制字符串(如:“7F 2C 4A”或“7F2C4A”都可以)</param>
|
||||
/// <returns>16进制字符串对应的byte数组</returns>
|
||||
public static byte[] HexStringToByteArray(string s)
|
||||
{
|
||||
s = s.Replace(" ", "");
|
||||
byte[] buffer = new byte[s.Length / 2];
|
||||
for (int i = 0; i < s.Length; i += 2)
|
||||
buffer[i / 2] = (byte)Convert.ToByte(s.Substring(i, 2), 16);
|
||||
return buffer;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 将一个byte数组转换成一个格式化的16进制字符串
|
||||
/// </summary>
|
||||
/// <param name="data">byte数组</param>
|
||||
/// <returns>格式化的16进制字符串</returns>
|
||||
public static string ByteArrayToHexString(byte[] data)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder(data.Length * 3);
|
||||
foreach (byte b in data)
|
||||
{
|
||||
//16进制数字
|
||||
sb.Append(Convert.ToString(b, 16).PadLeft(2, '0'));
|
||||
//16进制数字之间以空格隔开
|
||||
//sb.Append(Convert.ToString(b, 16).PadLeft(2, '0').PadRight(3, ' '));
|
||||
}
|
||||
return sb.ToString().ToUpper();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user