学习URL传输参数加密解密
来源:互联网 发布:算法设计与分析导论 编辑:程序博客网 时间:2024/04/29 17:18
最近正需要做一个login,正好看到这篇文章http://tb.blog.csdn.net/TrackBack.aspx?PostId=566243
不是很懂,于是根据MSDN好好学习了一下,把具体的用法都标注上了
index.aspx.cs (加密处理)
login.aspx.cs (解密处理)
不是很懂,于是根据MSDN好好学习了一下,把具体的用法都标注上了
index.aspx.cs (加密处理)
Byte[] Iv64={11, 22, 33, 44, 55, 66, 77, 85};
Byte[] byKey64={10, 20, 30, 40, 50, 60, 70, 80};
public string Encrypt(string strText)
{
try
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
//System.Security.Cryptography.DESCryptoServiceProvider
//定义访问数据加密标准 (DES) 算法的加密服务提供程序 (CSP) 版本的包装对象。无法继承此类。
Byte[] inputByteArray = Encoding.UTF8.GetBytes(strText);
//System.Text.Encoding 表示字符编码
//Encoding.UTF8 属性 获取 UTF-8 格式的编码
//GetBytes 将指定的 String 或字符数组的全部或部分内容编码为字节数组
MemoryStream ms = new MemoryStream();
//System.IO.MemoryStream 创建以内存作为其支持存储区的流
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(byKey64, Iv64), CryptoStreamMode.Write);
//System.Security.Cryptography.CryptoStream 定义将数据流链接到加密转换的流
//public CryptoStream(Stream stream,ICryptoTransform transform,CryptoStreamMode mode)
//参数
//stream
//对其执行加密转换的流。
//transform
//要对流执行的加密转换。
//mode
//CryptoStreamMode 值之一
//DESCryptoServiceProvider.CreateEncryptor方法 创建对称数据加密标准 (DES) 加密器对象
//用指定的 Key 和初始化向量 (IV) 创建对称数据加密标准 (DES) 加密器对象
cs.Write(inputByteArray, 0, inputByteArray.Length);
//CryptoStream.Write 方法 将一个字节序列写入当前 CryptoStream,并将流中的当前位置提升写入的字节数
//public override void Write(
//byte[] buffer,
//int offset,
//int count
//);
//参数
//buffer
//字节数组。此方法将 count 个字节从 buffer 复制到当前流。
//offset
//buffer 中的字节偏移量,从此偏移量开始将字节复制到当前流。
//count
//要写入当前流的字节数。
cs.FlushFinalBlock();
//CryptoStream.FlushFinalBlock 方法 用缓冲区的当前状态更新基础数据源或储存库,随后清除缓冲区。
return Convert.ToBase64String(ms.ToArray());
//Convert.ToBase64String 方法 将 8 位无符号整数数组的值转换为它的等效 String 表示形式(由以 64 为基的数字组成)。
}
catch(Exception ex)
{
return ex.Message;
}
}
private void btnLogin_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
DateTime nowTime = DateTime.Now;
string postUser = txtUser.Text.ToString();
string postPass = txtPassword.Text.ToString();
Response.Redirect("Login.aspx?clubID="+Encrypt(postUser+","+postPass+","+nowTime.ToString()));
}
Byte[] byKey64={10, 20, 30, 40, 50, 60, 70, 80};
public string Encrypt(string strText)
{
try
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
//System.Security.Cryptography.DESCryptoServiceProvider
//定义访问数据加密标准 (DES) 算法的加密服务提供程序 (CSP) 版本的包装对象。无法继承此类。
Byte[] inputByteArray = Encoding.UTF8.GetBytes(strText);
//System.Text.Encoding 表示字符编码
//Encoding.UTF8 属性 获取 UTF-8 格式的编码
//GetBytes 将指定的 String 或字符数组的全部或部分内容编码为字节数组
MemoryStream ms = new MemoryStream();
//System.IO.MemoryStream 创建以内存作为其支持存储区的流
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(byKey64, Iv64), CryptoStreamMode.Write);
//System.Security.Cryptography.CryptoStream 定义将数据流链接到加密转换的流
//public CryptoStream(Stream stream,ICryptoTransform transform,CryptoStreamMode mode)
//参数
//stream
//对其执行加密转换的流。
//transform
//要对流执行的加密转换。
//mode
//CryptoStreamMode 值之一
//DESCryptoServiceProvider.CreateEncryptor方法 创建对称数据加密标准 (DES) 加密器对象
//用指定的 Key 和初始化向量 (IV) 创建对称数据加密标准 (DES) 加密器对象
cs.Write(inputByteArray, 0, inputByteArray.Length);
//CryptoStream.Write 方法 将一个字节序列写入当前 CryptoStream,并将流中的当前位置提升写入的字节数
//public override void Write(
//byte[] buffer,
//int offset,
//int count
//);
//参数
//buffer
//字节数组。此方法将 count 个字节从 buffer 复制到当前流。
//offset
//buffer 中的字节偏移量,从此偏移量开始将字节复制到当前流。
//count
//要写入当前流的字节数。
cs.FlushFinalBlock();
//CryptoStream.FlushFinalBlock 方法 用缓冲区的当前状态更新基础数据源或储存库,随后清除缓冲区。
return Convert.ToBase64String(ms.ToArray());
//Convert.ToBase64String 方法 将 8 位无符号整数数组的值转换为它的等效 String 表示形式(由以 64 为基的数字组成)。
}
catch(Exception ex)
{
return ex.Message;
}
}
private void btnLogin_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
DateTime nowTime = DateTime.Now;
string postUser = txtUser.Text.ToString();
string postPass = txtPassword.Text.ToString();
Response.Redirect("Login.aspx?clubID="+Encrypt(postUser+","+postPass+","+nowTime.ToString()));
}
login.aspx.cs (解密处理)
//随机选8个字节既为密钥也为初始向量
Byte[] byKey64={10, 20, 30, 40, 50, 60, 70, 80};
Byte[] Iv64={11, 22, 33, 44, 55, 66, 77, 85};
public string Decrypt(string strText)
{
Byte[] inputByteArray = new byte[strText.Length];
try
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
inputByteArray = Convert.FromBase64String(strText);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(byKey64, Iv64), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
System.Text.Encoding encoding = System.Text.Encoding.UTF8;
return encoding.GetString(ms.ToArray());
}
catch(Exception ex)
{
return ex.Message;
}
}
private void Page_Load(object sender, System.EventArgs e)
{
if(Request.Params["clubID"]!=null)
{
string originalValue = Request.Params["clubID"];
originalValue = originalValue.Replace(" ","+");
//+号通过url传递变成了空格。
string decryptResult = Decrypt(originalValue);
//DecryptString(string)解密字符串
string delimStr = ",";
char[] delimiterArray = delimStr.ToCharArray();
//String.ToCharArray 方法 将此实例中的字符复制到 Unicode 字符数组
string [] userInfoArray = null;
userInfoArray = decryptResult.Split(delimiterArray);
//String.Split 方法 标识此实例中的子字符串(它们由数组中指定的一个或多个字符进行分隔),
//然后将这些子字符串放入一个 String 数组中
string userName = userInfoArray[0];//这句好像没什么用
User userToLogin = new User();//之前应该定义了一个实体类
userToLogin.Username = userInfoArray[0];
userToLogin.Password = userInfoArray[1];
}
}
Byte[] byKey64={10, 20, 30, 40, 50, 60, 70, 80};
Byte[] Iv64={11, 22, 33, 44, 55, 66, 77, 85};
public string Decrypt(string strText)
{
Byte[] inputByteArray = new byte[strText.Length];
try
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
inputByteArray = Convert.FromBase64String(strText);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(byKey64, Iv64), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
System.Text.Encoding encoding = System.Text.Encoding.UTF8;
return encoding.GetString(ms.ToArray());
}
catch(Exception ex)
{
return ex.Message;
}
}
private void Page_Load(object sender, System.EventArgs e)
{
if(Request.Params["clubID"]!=null)
{
string originalValue = Request.Params["clubID"];
originalValue = originalValue.Replace(" ","+");
//+号通过url传递变成了空格。
string decryptResult = Decrypt(originalValue);
//DecryptString(string)解密字符串
string delimStr = ",";
char[] delimiterArray = delimStr.ToCharArray();
//String.ToCharArray 方法 将此实例中的字符复制到 Unicode 字符数组
string [] userInfoArray = null;
userInfoArray = decryptResult.Split(delimiterArray);
//String.Split 方法 标识此实例中的子字符串(它们由数组中指定的一个或多个字符进行分隔),
//然后将这些子字符串放入一个 String 数组中
string userName = userInfoArray[0];//这句好像没什么用
User userToLogin = new User();//之前应该定义了一个实体类
userToLogin.Username = userInfoArray[0];
userToLogin.Password = userInfoArray[1];
}
}
- 学习URL传输参数加密解密
- URL传输参数加密解密
- URL传输参数的加密和解密
- WEB 系统中加密/解密URL传输参数
- WEB系统中加密/解密URL传输参数
- 对Url传输参数进行加密和解密
- WEB系统中加密/解密URL传输参数.
- WEB系统中加密解密URL传输参数.
- url参数加密解密
- 文件加密解密 URl参数加密解密
- url参数编码加密传输
- C# 加密解密URL传输的字符串
- 给URL地址栏中的参数加密/解密
- URL参数加密解密(java版)
- URL参数加密解密(java版)
- js url参数加密 后台java解密
- ASP.NET C# 通过URL加密解密传输数据
- 怎么实现Web系统URL传输(表单提交)参数加密
- VB中使用EXCEL输出
- 快速导出数据到Excel(三):利用Excel内置功能
- C#操作MS Word 和 MS Excel
- 有选择的使用第三方GUI库
- 首页右上角的flash文件
- 学习URL传输参数加密解密
- Beej网络socket编程指南
- 全面挖掘Java Excel API 使用方法
- TWebbrowser 中设置referer
- CPU和显卡的合理搭配(转东转西)
- 作共享软件要预备什么?
- 中国共享软件:向海外挺进
- 9月12日培训日记
- 中国共享软件现状分析