using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
namespace CommonToolsCore
{
public class AesClass
{
const string Key = "dau&*5asda.;lk8L";
///
/// AES 加密
///
/// 明文(待加密)
/// key
/// 密文
public string AesEncrypt(string str, string key = Key)
{
if (string.IsNullOrEmpty(str)) return null;
Byte[] toEncryptArray = Encoding.UTF8.GetBytes(str);
RijndaelManaged rm = new RijndaelManaged
{
Key = Encoding.UTF8.GetBytes(key),
Mode = CipherMode.ECB,
Padding = PaddingMode.PKCS7
};
ICryptoTransform cTransform = rm.CreateEncryptor();
Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}
///
/// AES 解密
///
/// 明文(待解密)
/// 密文
///
public string AesDecrypt(string str, string key = Key)
{
if (string.IsNullOrEmpty(str)) return null;
Byte[] toEncryptArray = Convert.FromBase64String(str);
RijndaelManaged rm = new RijndaelManaged
{
Key = Encoding.UTF8.GetBytes(key),
Mode = CipherMode.ECB,
Padding = PaddingMode.PKCS7
};
ICryptoTransform cTransform = rm.CreateDecryptor();
Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return Encoding.UTF8.GetString(resultArray);
}
///
/// 获取规则加密字符串 用于toke附带参数
///
/// 规则集合
/// 返回规则加密字符串
public string EncryptRules(RuleCollection rules)
{
string rs = JsonConvert.SerializeObject(rules);
return AesEncrypt(rs);
}
///
/// 解密字规则支付穿
///
/// 加密的字符串
/// 规则字符串类
public RuleCollection DecryptRules(string rules)
{
string str = AesDecrypt(rules);
return JsonConvert.DeserializeObject(str);
// return AesEncrypt(rs);
}
}
///
/// 业务权限集合和其他集合
///
public class RuleCollection
{
///
/// 用户名,这个名字可能会被更改
///
public string User { get; set; }
///
/// 授权的服务 用字符串表示,如果有 "CGGG"代表采购公告 "ZXDSFXLS" 代表竞争对手零时权限 没有该字符串,代表没有权限
///
public List PrivilegeService { get; set; }
/////
///// 采购公告
/////
//public int CGGG { get; set; }
// ///
// /// 竞争对手分析 零时权限
// ///
// public int ZXDSFXLS { get; set; }
// ///
// /// 竞争对手分析
// ///
// public int ZXDSFX { get; set; }
}
}