TG.WXCRM.V4/BLL/Util/SecurityHelper.cs

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;
}
}
}
}