您的位置:首页 > 编程语言 > ASP

ASP.NET C# URL加密解密

2012-03-13 10:51 609 查看
using System.Security.Cryptography;

using System.IO;

using System.text;

/// <summary>

/// 加密

/// </summary>

/// <param name="str"></param>

/// <param name="key"></param>

/// <returns></returns>

public static string Encode(string str, string key)

{

DESCryptoServiceProvider provider = new DESCryptoServiceProvider();

provider.Key = Encoding.ASCII.GetBytes(key.Substring(0, 8));

provider.IV = Encoding.ASCII.GetBytes(key.Substring(0, 8));

byte[] bytes = Encoding.GetEncoding("GB2312").GetBytes(str);

MemoryStream stream = new MemoryStream();

CryptoStream stream2 = new CryptoStream(stream, provider.CreateEncryptor(), CryptoStreamMode.Write);

stream2.Write(bytes, 0, bytes.Length);

stream2.FlushFinalBlock();

StringBuilder builder = new StringBuilder();

foreach (byte num in stream.ToArray())

{

builder.AppendFormat("{0:X2}", num);

}

stream.Close();

return builder.ToString();

}

/// <summary>

/// Des 解密 GB2312

/// </summary>

/// <param name="str">Desc string</param>

/// <param name="key">Key ,必须为8位 </param>

/// <returns></returns>

public static string Decode(string str, string key)

{

DESCryptoServiceProvider provider = new DESCryptoServiceProvider();

provider.Key = Encoding.ASCII.GetBytes(key.Substring(0, 8));

provider.IV = Encoding.ASCII.GetBytes(key.Substring(0, 8));

byte[] buffer = new byte[str.Length / 2];

for (int i = 0; i < (str.Length / 2); i++)

{

int num2 = Convert.ToInt32(str.Substring(i * 2, 2), 0x10);

buffer[i] = (byte)num2;

}

MemoryStream stream = new MemoryStream();

CryptoStream stream2 = new CryptoStream(stream, provider.CreateDecryptor(), CryptoStreamMode.Write);

stream2.Write(buffer, 0, buffer.Length);

stream2.FlushFinalBlock();

stream.Close();

return Encoding.GetEncoding("GB2312").GetString(stream.ToArray());

}

调用方法

/// <summary>

/// If don't input key , Use default key

/// Des 加密 GB2312 :

/// </summary>

/// <param name="str"></param>

/// <returns></returns>

public static string Encode(string str)

{

return VerifyTool.Encode(str, "Rainight");

}

/// <summary>

/// 解密

/// </summary>

/// <param name="str"></param>

/// <returns></returns>

public static string Decode(string str)

{

return VerifyTool.Decode(str, "Rainight");

}ASP.NET C# URL加密解密
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: