246 lines
8.2 KiB
C#
246 lines
8.2 KiB
C#
using System;
|
|
using System.Text;
|
|
using System.Web;
|
|
using WX.CRM.IBLL.Util;
|
|
using WX.Interface.Security;
|
|
|
|
namespace WX.CRM.BLL.Util
|
|
{
|
|
public class SecurityHelper : ISecurityHelper
|
|
{
|
|
public static CACHE_BL bl = new CACHE_BL();
|
|
public static bool bWithEncypt
|
|
{
|
|
get
|
|
{
|
|
if (bl.GetValue_Parameter(WX.CRM.Model.Enum.Parameter.是否开启加密) != null
|
|
&& bl.GetValue_Parameter(WX.CRM.Model.Enum.Parameter.是否开启加密) == "0")
|
|
return false;
|
|
return true;
|
|
}
|
|
}
|
|
|
|
public SecurityHelper()
|
|
{
|
|
//
|
|
// TODO: Add constructor logic here
|
|
//
|
|
}
|
|
|
|
public bool CheckClientValid(string clientId, string paramData, string signData)
|
|
{
|
|
|
|
//if (!bWithEncypt)
|
|
// return true;
|
|
ClientKey client = ClientKey.GetClientKey(clientId);
|
|
if (client == null)
|
|
return false;
|
|
EncDecUtil util = new EncDecUtil();
|
|
string sign = util.signData(paramData, client.AccessKey);
|
|
if (sign != signData)
|
|
return false;
|
|
return true;
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 加密
|
|
/// </summary>
|
|
/// <param name="clientId"></param>
|
|
/// <param name="paramData"></param>
|
|
/// <returns></returns>
|
|
public string encyptData(string clientId, string paramData)
|
|
{
|
|
//if (!bWithEncypt)
|
|
// return paramData;
|
|
ClientKey client = ClientKey.GetClientKey(clientId);
|
|
if (client == null)
|
|
throw new Exception("非法客户端访问");
|
|
EncDecUtil util = new EncDecUtil();
|
|
return util.encyptData(paramData, client.AccessKey);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 解密
|
|
/// </summary>
|
|
/// <param name="clientId"></param>
|
|
/// <param name="paramData"></param>
|
|
/// <returns></returns>
|
|
public string decyptData(string clientId, string paramData)
|
|
{
|
|
//if (!bWithEncypt)
|
|
// return paramData;
|
|
ClientKey client = ClientKey.GetClientKey(clientId);
|
|
if (client == null)
|
|
throw new Exception("非法客户端访问");
|
|
EncDecUtil util = new EncDecUtil();
|
|
return util.decyptData(paramData, client.AccessKey);
|
|
}
|
|
/// <summary>
|
|
/// 加密
|
|
/// </summary>
|
|
/// <param name="clientId"></param>
|
|
/// <param name="paramData"></param>
|
|
/// <returns></returns>
|
|
public string encyptDataNew(string ciphertext, string accessKey, string iv)
|
|
{
|
|
EncDecUtil util = new EncDecUtil();
|
|
return util.encyptDataNew(ciphertext, accessKey, iv);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 解密
|
|
/// </summary>
|
|
/// <param name="clientId"></param>
|
|
/// <param name="paramData"></param>
|
|
/// <returns></returns>
|
|
public string decyptDataNew(string cryptograph, string accessKey, string iv)
|
|
{
|
|
EncDecUtil util = new EncDecUtil();
|
|
return util.decyptDataNew(cryptograph, accessKey, iv);
|
|
}
|
|
/// <summary>
|
|
/// 生成sign
|
|
/// </summary>
|
|
/// <param name="clientId">约定</param>
|
|
/// <param name="paramData">加密后的串</param>
|
|
/// <returns></returns>
|
|
public string signData(string clientId, string paramData)
|
|
{
|
|
//if (!bWithEncypt)
|
|
// return paramData;
|
|
ClientKey client = ClientKey.GetClientKey(clientId);
|
|
if (client == null)
|
|
throw new Exception("非法客户端访问");
|
|
EncDecUtil util = new EncDecUtil();
|
|
return util.signData(paramData, client.AccessKey);
|
|
}
|
|
|
|
public string createSignEncodingStr(string json)
|
|
{
|
|
string clientid = "UPWEBSITE";
|
|
string key = "content={0}&clientid=" + clientid + "&sign={1}";
|
|
string jiami = encyptData(clientid, json);
|
|
string jiami1 = HttpUtility.UrlEncode(jiami, Encoding.UTF8);
|
|
string jiasuo = signData(clientid, jiami);
|
|
string jiasuo1 = HttpUtility.UrlEncode(jiasuo, Encoding.UTF8);
|
|
key = string.Format(key, jiami1, jiasuo1);
|
|
return key;
|
|
}
|
|
/// <summary>
|
|
/// JSON表单方式
|
|
/// </summary>
|
|
/// <param name="json">内容</param>
|
|
/// <param name="clientid">加密key配置</param>
|
|
/// <returns></returns>
|
|
public object createAjaxSignEncodingStr(string json, string clientid)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(clientid))
|
|
{
|
|
clientid = "UPWEBSITE";
|
|
}
|
|
string content = encyptData(clientid, json);
|
|
string sign = signData(clientid, content);
|
|
var maxjson = new
|
|
{
|
|
content = content,
|
|
clientId = clientid,
|
|
sign = sign
|
|
};
|
|
return maxjson;
|
|
|
|
}
|
|
|
|
public string createSignEncodingStr(string json, string clientid)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(clientid))
|
|
{
|
|
clientid = "UPWEBSITE";
|
|
}
|
|
string key = "content={0}&clientid=" + clientid + "&sign={1}";
|
|
string jiami = encyptData(clientid, json);
|
|
string jiami1 = HttpUtility.UrlEncode(jiami, Encoding.UTF8);
|
|
string jiasuo = signData(clientid, jiami);
|
|
string jiasuo1 = HttpUtility.UrlEncode(jiasuo, Encoding.UTF8);
|
|
key = string.Format(key, jiami1, jiasuo1);
|
|
return key;
|
|
}
|
|
|
|
public string createSignEncodingStr2(string json)
|
|
{
|
|
string clientid = "UPWEBSITE";
|
|
string key = "key={0}&clientid=" + clientid + "&sign={1}";
|
|
string jiami = encyptData(clientid, json);
|
|
string jiami1 = HttpUtility.UrlEncode(jiami, Encoding.UTF8);
|
|
string jiasuo = signData(clientid, jiami);
|
|
string jiasuo1 = HttpUtility.UrlEncode(jiasuo, Encoding.UTF8);
|
|
key = string.Format(key, jiami1, jiasuo1);
|
|
return key;
|
|
}
|
|
|
|
public string createSignEncodingStr2(string json, string clientid)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(clientid))
|
|
{
|
|
clientid = "UPWEBSITE";
|
|
}
|
|
string key = "key={0}&clientid=" + clientid + "&sign={1}";
|
|
string jiami = encyptData(clientid, json);
|
|
string jiami1 = HttpUtility.UrlEncode(jiami, Encoding.UTF8);
|
|
string jiasuo = signData(clientid, jiami);
|
|
string jiasuo1 = HttpUtility.UrlEncode(jiasuo, Encoding.UTF8);
|
|
key = string.Format(key, jiami1, jiasuo1);
|
|
return key;
|
|
}
|
|
|
|
|
|
public string createSignStr(string json)
|
|
{
|
|
string clientid = "UPWEBSITE";
|
|
string key = "content={0}&clientid=" + clientid + "&sign={1}";
|
|
string jiami = encyptData(clientid, json);
|
|
string jiasuo = signData(clientid, jiami);
|
|
key = string.Format(key, jiami, jiasuo);
|
|
return key;
|
|
}
|
|
|
|
/// <summary>
|
|
/// CTI号码加密
|
|
/// </summary>
|
|
/// <param name="json"></param>
|
|
/// <param name="clientid"></param>
|
|
/// <returns></returns>
|
|
public string encyptCtiNumStr(string para)
|
|
{
|
|
string clientid = "AYCRM2_CTI";
|
|
return encyptData(clientid, para);
|
|
}
|
|
|
|
/// <summary>
|
|
/// CTI号码解密
|
|
/// </summary>
|
|
/// <param name="json"></param>
|
|
/// <param name="clientid"></param>
|
|
/// <returns></returns>
|
|
public string decyptCtiNumStr(string para)
|
|
{
|
|
string clientid = "AYCRM2_CTI";
|
|
return decyptData(clientid, para);
|
|
}
|
|
|
|
public static string OrderClientIdKey
|
|
{
|
|
get
|
|
{
|
|
var key = bl.GetValue_Parameter(WX.CRM.Model.Enum.Parameter.Sys_OrderClientIdKey);
|
|
|
|
if (string.IsNullOrWhiteSpace(key))
|
|
{
|
|
return "UPWEBSITE";
|
|
}
|
|
return key;
|
|
}
|
|
}
|
|
}
|
|
}
|