using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Security.Cryptography;
using System.Text;
using UnityEngine;
public static class EncryptionTool
{
public static byte[] MakeMD5(byte[] kb)
{
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();//用来给密钥进行散列
byte[] keyhash = md5.ComputeHash(kb);//给密钥散列
md5.Clear();//释放资源
return keyhash;
}
#region 加密
///
/// 使用给定密钥加密字符串
///
/// 明文
/// 密钥
/// 加密后的密文
public static string Encrypt(this string original, string key)
{
byte[] buff = Encoding.Unicode.GetBytes(original);//把明文转化成二进制数组
byte[] kb = Encoding.Unicode.GetBytes(key);//把密钥转化成二进制数组
TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();//用TripleDES算法来加密的类
des.Key = MakeMD5(kb);//设置TripleDES算法的密钥
des.Mode = CipherMode.ECB;//设置算法的模式
byte[] enByte = des.CreateEncryptor().TransformFinalBlock(buff, 0, buff.Length);
return Convert.ToBase64String(enByte);
}
///
/// 使用默认密钥加密
///
/// 明文
/// 加密后的密文
public static string Encrypt(this string original)
{
return Encrypt(original, "ldq");
}
#endregion
#region 解密
///
/// 使用指定的密钥解密
///
/// 加密过后的密码
/// 密钥(密钥的明文)
/// 密码对应的明文
public static string Decrypt(this string encrypted, string key)
{
byte[] buff = Convert.FromBase64String(encrypted);
byte[] kb = Encoding.Unicode.GetBytes(key);
TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
des.Key = MakeMD5(kb);
des.Mode = CipherMode.ECB;
byte[] original = des.CreateDecryptor().TransformFinalBlock(buff, 0, buff.Length);//获取明文的byte数组
return Encoding.Unicode.GetString(original);//转化成字符串,并返回
}
public static string Decrypt(this string encrypted)
{
return Decrypt(encrypted, "ldq");
}
#endregion
}