using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using System.Web;
namespace DG.Tool
{
public static class SecurityHelper
{
///
/// 加密
///
///
///
///
public static string EncyptData(string ciphertext, string accessKey)
{
SymmetricAlgorithm des = new DESCryptoServiceProvider();
Encoding utf = new UTF8Encoding();
byte[] key = utf.GetBytes(accessKey);
byte[] iv = { 0x75, 0x70, 0x63, 0x68, 0x69, 0x6e, 0x61, 0x31 };
ICryptoTransform encryptor = des.CreateEncryptor(key, iv);
byte[] data = utf.GetBytes(ciphertext);
byte[] encData = encryptor.TransformFinalBlock(data, 0, data.Length);
return Convert.ToBase64String(encData);
}
///
/// 解密
///
///
///
///
public static string DecyptData(string cryptograph, string accessKey)
{
SymmetricAlgorithm des = new DESCryptoServiceProvider();
Encoding utf = new UTF8Encoding();
byte[] key = utf.GetBytes(accessKey);
byte[] iv = { 0x75, 0x70, 0x63, 0x68, 0x69, 0x6e, 0x61, 0x31 };
ICryptoTransform decryptor = des.CreateDecryptor(key, iv);
byte[] encData = Convert.FromBase64String(cryptograph);
byte[] data = decryptor.TransformFinalBlock(encData, 0, encData.Length);
return utf.GetString(data);
}
public static string SignData(string ciphertext, string accessKey)
{
Encoding utf = new UTF8Encoding();
HMACMD5 hmac = new HMACMD5(utf.GetBytes(accessKey));
byte[] hashValue = hmac.ComputeHash(utf.GetBytes(ciphertext));
return Convert.ToBase64String(hashValue);
}
///
/// 加密
///
///
///
///
///
public static string EncyptDataNew(string ciphertext, string accessKey, string iv)
{
SymmetricAlgorithm des = new DESCryptoServiceProvider();
Encoding utf = new UTF8Encoding();
byte[] key = utf.GetBytes(accessKey);
byte[] ivbt = utf.GetBytes(iv);
ICryptoTransform encryptor = des.CreateEncryptor(key, ivbt);
byte[] data = utf.GetBytes(ciphertext);
byte[] encData = encryptor.TransformFinalBlock(data, 0, data.Length);
return Convert.ToBase64String(encData);
}
///
/// 解密
///
///
///
///
///
public static string DecyptDataNew(string cryptograph, string accessKey, string iv)
{
SymmetricAlgorithm des = new DESCryptoServiceProvider();
Encoding utf = new UTF8Encoding();
byte[] key = utf.GetBytes(accessKey);
byte[] ivbt = utf.GetBytes(iv);
ICryptoTransform decryptor = des.CreateDecryptor(key, ivbt);
byte[] encData = Convert.FromBase64String(cryptograph);
byte[] data = decryptor.TransformFinalBlock(encData, 0, encData.Length);
return utf.GetString(data);
}
public static string CreateSignEncodingStr(string json, string clientid, string accessKey)
{
if (string.IsNullOrWhiteSpace(clientid))
{
clientid = "UPWEBSITE";
}
string key = "content={0}&clientid=" + clientid + "&sign={1}";
string jiami = EncyptData(json, accessKey);
string jiami1 = HttpUtility.UrlEncode(jiami, Encoding.UTF8);
string jiasuo = SignData(jiami, accessKey);
string jiasuo1 = HttpUtility.UrlEncode(jiasuo, Encoding.UTF8);
key = string.Format(key, jiami1, jiasuo1);
return key;
}
public static object CreateSignEncodingJsonStr(string json, string clientid, string accessKey)
{
//if (string.IsNullOrWhiteSpace(clientid))
//{
// clientid = "UPWEBSITE";
//}
//string key = "content={0}&clientid=" + clientid + "&sign={1}";
//string jiami = EncyptData(json, accessKey);
//string jiami1 = HttpUtility.UrlEncode(jiami, Encoding.UTF8);
//string jiasuo = SignData(jiami, accessKey);
//string jiasuo1 = HttpUtility.UrlEncode(jiasuo, Encoding.UTF8);
//key = string.Format(key, jiami1, jiasuo1);
//return key;
if (string.IsNullOrWhiteSpace(clientid))
{
clientid = "UPWEBSITE";
}
string content = EncyptData(json, accessKey);
string sign = SignData(content, accessKey);
var maxjson = new
{
content = content,
clientId = clientid,
sign = sign
};
return maxjson;
}
}
}