using System;
using System.Collections.Generic;
using System.IO;
using System.Security.Cryptography;
using System.Text;
namespace CommonUtil.DMEncrypt
{
///
/// 多卖加密
///
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";
///
/// 加密Secret
///
public static readonly string keySecret = "secdm*41";
///
/// 备份订单数据加密
///
public readonly static string keyBdUser = "sebddm*1";
///
/// 加密sql
///
public static readonly string keySql = "dmrebuqi";
///
/// 解密
///
///
///
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;
}
///
/// 加密
///
///
///
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 必达账号加密
///
/// 必达账号加密
///
/// 待加密的字符串
/// 加密成功返回加密后的字符串,失败返回源串
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 必达账号解密
///
/// 必达账号解密
///
/// 待解密的字符串
/// 解密成功返回解密后的字符串,失败返源串
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 数据库链接字符串 加密解密
///
/// 数据库链接加密
///
/// 待加密的字符串
/// 加密成功返回加密后的字符串,失败返回源串
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;
}
}
///
/// 数据库链接解密
///
/// 待解密的字符串
/// 解密成功返回解密后的字符串,失败返源串
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
}
}