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");
}
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加密解密
- ASP.NET C# URL加密解密
- ASP.NET C# 通过URL加密解密传输数据
- ASP.NET C# URL加密解密
- ASP.NET C# URL加密解密
- ASP.NET C# URL加密解密
- ASP.NET C# URL加密解密
- ASP.NET C# URL加密解密
- ASP.NET C# URL加密解密
- asp.net中URL参数加密解密过程
- Asp.net中URL加密和解密(转)
- asp.net 加密解密URL
- asp.net URL参数的加密与解密问题
- ASP.NET - URL中参数加密解密操作
- asp.net c#基于DEC的加密与解密
- c# asp.net 字符串加密解密的类
- asp.net URL参数加密解密的问题
- c# asp.net 字符串加密解密的类
- Asp.net中URL加密和解密
- Asp.Net C#中除了MD5加密之外还经常用到了AES加密、解密与DES加密、解密,本次先介绍DES的加密及解密。注意的是DES的密匙是8位的。