using System;
|
using System.Collections.Generic;
|
using System.IO;
|
using System.Security.Cryptography;
|
using System.Text;
|
|
namespace CommonUtil.DMEncrypt
|
{
|
/// <summary>
|
/// 多卖加密
|
/// </summary>
|
public static class Encrypt
|
{
|
private static byte[] Keys = new byte[]
|
{
|
18,
|
52,
|
86,
|
120,
|
144,
|
171,
|
205,
|
239
|
};
|
private static readonly string keyData = "appdm&2s";
|
|
/// <summary>
|
/// 加密Secret
|
/// </summary>
|
public static readonly string keySecret = "secdm*41";
|
|
/// <summary>
|
/// 备份订单数据加密
|
/// </summary>
|
public readonly static string keyBdUser = "sebddm*1";
|
|
/// <summary>
|
/// 加密sql
|
/// </summary>
|
public static readonly string keySql = "dmrebuqi";
|
|
/// <summary>
|
/// 解密
|
/// </summary>
|
/// <param name="decryptString"></param>
|
/// <returns></returns>
|
public static string DecryptDES(string decryptString)
|
{
|
string result;
|
try
|
{
|
byte[] bytes = Encoding.UTF8.GetBytes(Encrypt.keyData);
|
byte[] keys = Encrypt.Keys;
|
byte[] array = Convert.FromBase64String(decryptString);
|
DESCryptoServiceProvider dESCryptoServiceProvider = new DESCryptoServiceProvider();
|
MemoryStream memoryStream = new MemoryStream();
|
CryptoStream cryptoStream = new CryptoStream(memoryStream, dESCryptoServiceProvider.CreateDecryptor(bytes, keys), CryptoStreamMode.Write);
|
cryptoStream.Write(array, 0, array.Length);
|
cryptoStream.FlushFinalBlock();
|
result = Encoding.UTF8.GetString(memoryStream.ToArray());
|
}
|
catch
|
{
|
result = decryptString;
|
}
|
return result;
|
}
|
|
/// <summary>
|
/// 加密
|
/// </summary>
|
/// <param name="encryptString"></param>
|
/// <returns></returns>
|
public static string EncryptDES(string encryptString)
|
{
|
string result;
|
try
|
{
|
byte[] bytes = Encoding.UTF8.GetBytes(Encrypt.keyData.Substring(0, 8));
|
byte[] keys = Encrypt.Keys;
|
byte[] bytes2 = Encoding.UTF8.GetBytes(encryptString);
|
DESCryptoServiceProvider dESCryptoServiceProvider = new DESCryptoServiceProvider();
|
MemoryStream memoryStream = new MemoryStream();
|
CryptoStream cryptoStream = new CryptoStream(memoryStream, dESCryptoServiceProvider.CreateEncryptor(bytes, keys), CryptoStreamMode.Write);
|
cryptoStream.Write(bytes2, 0, bytes2.Length);
|
cryptoStream.FlushFinalBlock();
|
result = Convert.ToBase64String(memoryStream.ToArray());
|
}
|
catch
|
{
|
result = encryptString;
|
}
|
return result;
|
}
|
|
#region 必达账号加密
|
/// <summary>
|
/// 必达账号加密
|
/// </summary>
|
/// <param name="encryptString">待加密的字符串</param>
|
/// <returns>加密成功返回加密后的字符串,失败返回源串 </returns>
|
public static string EncryptDES_BD(string encryptString)
|
{
|
try
|
{
|
byte[] rgbKey = Encoding.UTF8.GetBytes(keyBdUser.Substring(0, 8));//转换为字节
|
byte[] rgbIV = Keys;
|
byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
|
DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();//实例化数据加密标准
|
MemoryStream mStream = new MemoryStream();//实例化内存流
|
//将数据流链接到加密转换的流
|
CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
|
cStream.Write(inputByteArray, 0, inputByteArray.Length);
|
cStream.FlushFinalBlock();
|
return Convert.ToBase64String(mStream.ToArray());
|
}
|
catch
|
{
|
return encryptString;
|
}
|
}
|
#endregion
|
|
#region 必达账号解密
|
/// <summary>
|
/// 必达账号解密
|
/// </summary>
|
/// <param name="decryptString">待解密的字符串</param>
|
/// <returns>解密成功返回解密后的字符串,失败返源串</returns>
|
public static string DecryptDES_BD(string decryptString)
|
{
|
try
|
{
|
byte[] rgbKey = Encoding.UTF8.GetBytes(keyBdUser);
|
byte[] rgbIV = Keys;
|
byte[] inputByteArray = Convert.FromBase64String(decryptString);
|
DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
|
MemoryStream mStream = new MemoryStream();
|
CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
|
cStream.Write(inputByteArray, 0, inputByteArray.Length);
|
cStream.FlushFinalBlock();
|
return Encoding.UTF8.GetString(mStream.ToArray());
|
}
|
catch
|
{
|
return decryptString;
|
}
|
}
|
#endregion
|
|
#region 数据库链接字符串 加密解密
|
|
/// <summary>
|
/// 数据库链接加密
|
/// </summary>
|
/// <param name="encryptString">待加密的字符串</param>
|
/// <returns>加密成功返回加密后的字符串,失败返回源串 </returns>
|
public static string EncryptDES_DB(string encryptString)
|
{
|
try
|
{
|
byte[] rgbKey = Encoding.UTF8.GetBytes(keySql.Substring(0, 8));//转换为字节
|
byte[] rgbIV = Keys;
|
byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
|
DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();//实例化数据加密标准
|
MemoryStream mStream = new MemoryStream();//实例化内存流
|
//将数据流链接到加密转换的流
|
CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
|
cStream.Write(inputByteArray, 0, inputByteArray.Length);
|
cStream.FlushFinalBlock();
|
return Convert.ToBase64String(mStream.ToArray());
|
}
|
catch
|
{
|
return encryptString;
|
}
|
}
|
|
/// <summary>
|
/// 数据库链接解密
|
/// </summary>
|
/// <param name="decryptString">待解密的字符串</param>
|
/// <returns>解密成功返回解密后的字符串,失败返源串</returns>
|
public static string DecryptDES_DB(string decryptString)
|
{
|
try
|
{
|
byte[] rgbKey = Encoding.UTF8.GetBytes(keySql);
|
byte[] rgbIV = Keys;
|
byte[] inputByteArray = Convert.FromBase64String(decryptString);
|
DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
|
MemoryStream mStream = new MemoryStream();
|
CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
|
cStream.Write(inputByteArray, 0, inputByteArray.Length);
|
cStream.FlushFinalBlock();
|
return Encoding.UTF8.GetString(mStream.ToArray());
|
}
|
catch
|
{
|
return decryptString;
|
}
|
}
|
|
#endregion
|
}
|
}
|