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

URL加密解密 (asp.net C#)

2009-11-05 08:52 387 查看
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");

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