using System; |
using System.Collections.Generic; |
using System.Linq; |
using System.Text; |
using System.Security.Cryptography; |
namespace Kad.ThridParty.ChinaPayWap |
{ |
/// <summary> |
/// 对称加密3DES加解密,代码来源于网络 |
/// </summary> |
internal class TripleDESHelper |
{ |
/// <summary> |
/// 加密 |
/// </summary> |
/// <param name="toEncrypt">要加密的字符串,即明文</param> |
/// <param name="key">公共密钥</param> |
/// <param name="useHashing">是否使用MD5生成机密秘钥</param> |
/// <returns>加密后的字符串,即密文</returns> |
public static string Encrypt( string toEncrypt, string key, bool useHashing) |
{ |
try |
{ |
byte [] keyArray; |
byte [] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt); |
if (useHashing) |
{ |
MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider(); |
keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key)); |
} |
else |
keyArray = UTF8Encoding.UTF8.GetBytes(key); |
TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider(); |
tdes.Key = keyArray; |
tdes.Mode = CipherMode.ECB; |
tdes.Padding = PaddingMode.PKCS7; |
ICryptoTransform cTransform = tdes.CreateEncryptor(); |
byte [] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); |
return Convert.ToBase64String(resultArray, 0, resultArray.Length); |
} |
catch |
{ |
} |
return string .Empty; |
} |
public static string Encrypt( byte [] toEncryptArray, string key, bool useHashing) |
{ |
try |
{ |
byte [] keyArray; |
//byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt); |
if (useHashing) |
{ |
MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider(); |
keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key)); |
} |
else |
keyArray = UTF8Encoding.UTF8.GetBytes(key); |
TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider(); |
tdes.Key = keyArray; |
tdes.Mode = CipherMode.ECB; |
tdes.Padding = PaddingMode.PKCS7; |
ICryptoTransform cTransform = tdes.CreateEncryptor(); |
byte [] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); |
return Convert.ToBase64String(resultArray, 0, resultArray.Length); |
} |
catch |
{ |
} |
return string .Empty; |
} |
/// <summary> |
/// 解密 |
/// </summary> |
/// <param name="toDecrypt">要解密的字符串,即密文</param> |
/// <param name="key">公共密钥</param> |
/// <param name="useHashing">是否使用MD5生成机密密钥</param> |
/// <returns>解密后的字符串,即明文</returns> |
public static string Decrypt( string toDecrypt, string key, bool useHashing) |
{ |
try |
{ |
byte [] keyArray; |
byte [] toEncryptArray = Convert.FromBase64String(toDecrypt); |
if (useHashing) |
{ |
MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider(); |
keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key)); |
} |
else |
keyArray = UTF8Encoding.UTF8.GetBytes(key); |
TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider(); |
tdes.Key = keyArray; |
tdes.Mode = CipherMode.ECB; |
tdes.Padding = PaddingMode.PKCS7; |
ICryptoTransform cTransform = tdes.CreateDecryptor(); |
byte [] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); |
return UTF8Encoding.UTF8.GetString(resultArray); |
} |
catch |
{ |
} |
return string .Empty; |
} |
public static string Decrypt( byte [] toEncryptArray, string key, bool useHashing) |
{ |
try |
{ |
byte [] keyArray; |
//byte[] toEncryptArray = Convert.FromBase64String(toDecrypt); |
if (useHashing) |
{ |
MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider(); |
keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key)); |
} |
else |
keyArray = UTF8Encoding.UTF8.GetBytes(key); |
TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider(); |
tdes.Key = keyArray; |
tdes.Mode = CipherMode.ECB; |
tdes.Padding = PaddingMode.PKCS7; |
ICryptoTransform cTransform = tdes.CreateDecryptor(); |
byte [] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); |
return UTF8Encoding.UTF8.GetString(resultArray); |
} |
catch |
{ |
} |
return string .Empty; |
} |
} |
} |
by: 发表于:2018-01-24 09:46:38 顶(0) | 踩(0) 回复
??
回复评论