216 lines
6.9 KiB
C#
216 lines
6.9 KiB
C#
/*
|
|
* MD5加密
|
|
* 肖俊
|
|
* 2013-6-7
|
|
*/
|
|
using System;
|
|
using System.IO;
|
|
using System.Security.Cryptography;
|
|
using System.Text;
|
|
|
|
namespace AllBase
|
|
{
|
|
public static class Md5Base
|
|
{
|
|
/// <summary>
|
|
/// MD5加密
|
|
/// </summary>
|
|
/// <param name="instring"></param>
|
|
/// <returns></returns>
|
|
public static string GetMd5(string instring)
|
|
{
|
|
byte[] result = Encoding.UTF8.GetBytes(string.IsNullOrEmpty(instring)?"": instring.Trim());
|
|
MD5 md5 = new MD5CryptoServiceProvider();
|
|
byte[] output = md5.ComputeHash(result);
|
|
return BitConverter.ToString(output).Replace("-", "");
|
|
}
|
|
/// <summary>
|
|
/// MD5加密
|
|
/// </summary>
|
|
/// <param name="instring"></param>
|
|
/// <returns></returns>
|
|
//public static string GetMd5X16(string instring)
|
|
//{
|
|
// string temp = GetMd5(instring);
|
|
// return temp.Substring(8, 16);
|
|
//}
|
|
|
|
/// <summary>
|
|
/// MD5加密
|
|
/// </summary>
|
|
/// <param name="instring"></param>
|
|
/// <returns></returns>
|
|
public static string GetMd5X15(string instring)
|
|
{
|
|
string temp = GetMd5(instring);
|
|
return temp.Substring(8, 15);
|
|
}
|
|
/// <summary>
|
|
/// 解码
|
|
/// </summary>
|
|
/// <param name="code"></param>
|
|
/// <returns></returns>
|
|
public static string DecodeString(string code)
|
|
{
|
|
try
|
|
{
|
|
string code1 =
|
|
code.Trim().Replace("_1/", "c")
|
|
.Replace("_2/", "Y")
|
|
.Replace("_3/", "A")
|
|
.Replace("_4/", "Z")
|
|
.Replace("_5/", "h")
|
|
.Replace("_6/", "n")
|
|
.Replace("_7/", "I")
|
|
.Replace("_8/", "l")
|
|
.Replace("_9/", "t")
|
|
.Replace("_10/", "e")
|
|
.Replace("_11/", "K")
|
|
.Replace("_12/", "r")
|
|
.Replace("_13/", "o")
|
|
.Replace("_14/", "q")
|
|
.Replace("_15/", "W")
|
|
.Replace("_16/", "+")
|
|
.Replace("_17/", "H")
|
|
.Replace("_18/", "m")
|
|
.Replace("_19/", "F")
|
|
.Replace("_20/", "x")
|
|
.Replace("_21/", "v")
|
|
.Replace("_22/", "B")
|
|
.Replace("_23/", "=")
|
|
.Replace("_0/", "_");
|
|
byte[] inArray = Convert.FromBase64String(code1);
|
|
string html = Encoding.UTF8.GetString(inArray);
|
|
html =
|
|
html.Replace("_1_", "=")
|
|
.Replace("_2_", "?")
|
|
.Replace("_3_", "/")
|
|
.Replace("_4_", ".")
|
|
.Replace("_5_", "&")
|
|
.Replace("_6_", "<")
|
|
.Replace("_7_", ">")
|
|
.Replace("_8_", "'")
|
|
.Replace("_9_", "\"")
|
|
.Replace("_", "_0");
|
|
return html;
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
LogSave.Add("解码数据错误:"+code);
|
|
return "";
|
|
}
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 加密返回数据
|
|
/// </summary>
|
|
/// <param name="html">密文</param>
|
|
/// <returns></returns>
|
|
public static string EncodeString(string html)
|
|
{
|
|
if (string.IsNullOrEmpty(html))
|
|
return "";
|
|
html =
|
|
html.Replace("_0", "_")
|
|
.Replace("=", "_1_")
|
|
.Replace("?", "_2_")
|
|
.Replace("/", "_3_")
|
|
.Replace(".", "_4_")
|
|
.Replace("&", "_5_")
|
|
.Replace("\\", "_6_")
|
|
.Replace(">", "_7_")
|
|
.Replace("'", "_8_")
|
|
.Replace("\"", "_9_");
|
|
string code = Base64Encode.EncodeBase64(html);
|
|
code =
|
|
code.Replace("c", "_1_")
|
|
.Replace("Y", "_2_")
|
|
.Replace("A", "_3_")
|
|
.Replace("Z", "_4_")
|
|
.Replace("h", "_5_")
|
|
.Replace("n", "_6_")
|
|
.Replace("I", "_7_")
|
|
.Replace("o", "_8_")
|
|
.Replace("t", "_9_")
|
|
.Replace("=", "_0_");
|
|
return code;
|
|
}
|
|
|
|
|
|
#region EBFB8THEA 加密
|
|
public static string _KEY = "XNNRSAA1"; //密钥
|
|
public static string _IV = "RSABPDD2"; //向量
|
|
|
|
/// <summary>
|
|
/// 加密
|
|
/// </summary>
|
|
/// <param name="data">需要加密的文本</param>
|
|
/// <returns></returns>
|
|
public static string EncryptEncode(string data)
|
|
{
|
|
byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(_KEY);
|
|
byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(_IV);
|
|
|
|
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
|
|
int i = cryptoProvider.KeySize;
|
|
MemoryStream ms = new MemoryStream();
|
|
CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);
|
|
|
|
StreamWriter sw = new StreamWriter(cst);
|
|
sw.Write(data);
|
|
sw.Flush();
|
|
cst.FlushFinalBlock();
|
|
sw.Flush();
|
|
string strRet = Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
|
|
|
|
sw.Dispose();
|
|
sw.Close();
|
|
cst.Dispose();
|
|
cst.Close();
|
|
ms.Dispose();
|
|
ms.Close();
|
|
return strRet;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 解密
|
|
/// </summary>
|
|
/// <param name="data"></param>
|
|
/// <returns></returns>
|
|
public static string EncryptDecode(string data)
|
|
{
|
|
byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(_KEY);
|
|
byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(_IV);
|
|
byte[] byEnc;
|
|
|
|
try
|
|
{
|
|
data.Replace("_%_", "/");
|
|
data.Replace("-%-", "#");
|
|
byEnc = Convert.FromBase64String(data);
|
|
}
|
|
catch
|
|
{
|
|
return null;
|
|
}
|
|
|
|
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
|
|
MemoryStream ms = new MemoryStream(byEnc);
|
|
CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);
|
|
StreamReader sr = new StreamReader(cst);
|
|
var result = sr.ReadToEnd();
|
|
|
|
sr.Dispose();
|
|
sr.Close();
|
|
cst.Dispose();
|
|
cst.Close();
|
|
ms.Dispose();
|
|
ms.Close();
|
|
|
|
return result;
|
|
}
|
|
#endregion
|
|
}
|
|
}
|