在网络的数据交互中,特别是在从一个网站到另一个网站的数据验证上,通常我们需要更安全的加密方法,在ASP方面,实现起来会相对难点,而且代量也很大,但是在asp.net中有一系列的加密与解密的类与方法,比如对称加密。
需要用到的命名空间:
System
System.Text
System.Security.Cryptography
需要用到的类:
System.Convert
System.Text.Encoding
System.Security.Cryptography.TripleDESCryptoServiceProvider
核心代码:
private
static
bool
Encrypt(
byte
[] KEY,
byte
[] IV,
byte
[] TobeEncrypted,
out
byte
[] Encrypted)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
Encrypted = null;
try
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
byte[] buffer1 = new byte[] ...{ 0, 1, 2, 3, 4, 5, 6, 7 };
for (int num1 = 0; num1 < 8; num1++)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
buffer1[num1] = IV[num1];
}
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
byte[] buffer2 = new byte[] ...{
0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7,
0, 1, 2, 3, 4, 5, 6, 7
};
for (int num2 = 0; num2 < 24; num2++)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
buffer2[num2] = KEY[num2];
}
Encrypted = des.CreateEncryptor(buffer2, buffer1).TransformFinalBlock(TobeEncrypted, 0, TobeEncrypted.Length);
des.Clear();
}
catch
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
return false;
}
return true;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
private
static
bool
Decrypt(
byte
[] KEY,
byte
[] IV,
byte
[] TobeDecrypted,
out
byte
[] Decrypted)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
Decrypted = null;
try
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
byte[] buffer1 = new byte[] ...{ 0, 1, 2, 3, 4, 5, 6, 7 };
for (int num1 = 0; num1 < 8; num1++)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
buffer1[num1] = IV[num1];
}
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
byte[] buffer2 = new byte[] ...{
0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7,
0, 1, 2, 3, 4, 5, 6, 7
};
for (int num2 = 0; num2 < 24; num2++)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
buffer2[num2] = KEY[num2];
}
Decrypted = des.CreateDecryptor(buffer2, buffer1).TransformFinalBlock(TobeDecrypted, 0, TobeDecrypted.Length);
des.Clear();
}
catch
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
return false;
}
return true;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
public
static
string
Encode(
string
InputStr)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
try
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
byte[] buffer1 = HexStringToByteArray(PrivateKey);
byte[] buffer2 = HexStringToByteArray(PrivateIV);
byte[] buffer3;
if (!Encrypt(buffer1, buffer2, Encoding.GetEncoding("utf-8").GetBytes(InputStr), out buffer3))
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
return "";
}
else
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
return Convert.ToBase64String(buffer3);
}
}
catch
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
return "";
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
public
static
string
Decode(
string
InputStr)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
try
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
byte[] buffer1 = HexStringToByteArray(PrivateKey);
byte[] buffer2 = HexStringToByteArray(PrivateIV);
byte[] buffer3;
if (!Decrypt(buffer1, buffer2, Convert.FromBase64String(InputStr), out buffer3))
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
return "";
}
else
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
return Encoding.GetEncoding("utf-8").GetString(buffer3);
}
}
catch
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
return "";
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
}
打包好的DLL下载:
点击下载此文件
调用方法:
提示:PrivateKey 必须为48位 PrivateIV必需为16位
using
System;
using
System.Configuration;
using
System.Collections;
using
System.Web;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Web.UI.WebControls.WebParts;
using
System.Web.UI.HtmlControls;
using
SecurityCode;
public
partial
class
_Default : System.Web.UI.Page
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
protected void Page_Load(object sender, EventArgs e)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
Code.PrivateKey = "Ad64cC32A8804C7AA8EA62589252231FFD6802E6028658A1";
Code.PrivateIV = "1122030405060708";
string text1 = Code.Encode("test");
string test2 = Code.Decode(text1);
Response.Write(text1 + "<br/>" + test2);
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)