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; }
///
/// 小采问答权限
///
public bool XC { get; set; }
///
/// 咨询权限
///
public bool ZX { get; set; }
///
/// 赠送书籍权限
///
public bool SJ { get; set; }
///
/// 政采课堂
///
public bool KT { get; set; }
///
/// 投诉案例处理 0时无权限
///
public int TS { get; set; }
///
/// 标书制作0时无权限
///
public int BS { get; set; }
///
/// 纠纷 0时无权限
///
public int JS { get; set; }
///
/// 折扣 或者10无折扣 只能时0-9之间的数字
///
public int DSoff { get; set; }
///
/// 采购公告
///
public int CGGG { get; set; }
///
/// 竞争对手分析
///
public int ZXDSFX { get; set; }
///
/// 临时竞争对手分析
///
public int ZXDSFXLS { get; set; }
}
}