首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>服务器技术>WEB服务器>正文

WEB 系统中加密\解密URL传输参数

http://www.oklinux.cn  2004-09-08  来源: oklinux收集   会员收藏  游客收藏  【 】 

  网上很多人在问怎么实现Web系统URL传输(表单提交)参数加密。例如:要进行一个用户帐号编辑,要传递用户的ID,URL如下:http://localhost/mysystem/editAccounts.aspx?ID=2
  但又不想让别人知道这个用户的ID为2,恶意的使用者可能还会将2修改,改为别的用户ID。
  加密传递的参数值可以解决问题。
  以下是自己写的DEC加密、解密的基类。
  
  文件名:Security.CS
  
  using System;
  using System.Security.Cryptography;
  using System.IO;
  using System.Text;
  
  namespace EIP.Framework
  {
  ///
  /// Security 的摘要说明。
  /// Security类实现.NET框架下的加密和解密。
  /// CopyRight [email protected]@[email protected]
  ///
  public class Security
  {
  string _QueryStringKey = "abcdefgh"; //URL传输参数加密Key
  string _PassWordKey = "hgfedcba"; //PassWord加密Key
  
  public Security()
  {
  //
  // TODO: 在此处添加构造函数逻辑
  //
  }
  
  ///
  /// 加密URL传输的字符串
  ///
  public string EncryptQueryString(string QueryString)
  {
  return Encrypt(QueryString,_QueryStringKey);
  }
  
  ///
  /// 解密URL传输的字符串
  ///
  public string DecryptQueryString(string QueryString)
  {
  return Decrypt(QueryString,_QueryStringKey);
  }
  
  ///
  /// 加密帐号口令
  ///
  public string EncryptPassWord(string PassWord)
  {
  return Encrypt(PassWord,_PassWordKey);
  }
  
  ///
  /// 解密帐号口令
  ///
  public string DecryptPassWord(string PassWord)
  {
  return Decrypt(PassWord,_PassWordKey);
  }
  
  ///
  /// DEC 加密过程
  ///
  public string Encrypt(string pToEncrypt,string sKey)
  {
  DESCryptoServiceProvider des = new DESCryptoServiceProvider(); //把字符串放到byte数组中
  
  byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
  //byte[] inputByteArray=Encoding.Unicode.GetBytes(pToEncrypt);
  
  des.Key = ASCIIEncoding.ASCII.GetBytes(sKey); //建立加密对象的密钥和偏移量
  des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);  //原文使用ASCIIEncoding.ASCII方法的GetBytes方法
  MemoryStream ms = new MemoryStream();   //使得输入密码必须输入英文文本
  CryptoStream cs = new CryptoStream(ms,des.CreateEncryptor(),CryptoStreamMode.Write);
  
  cs.Write(inputByteArray, 0, inputByteArray.Length);
  cs.FlushFinalBlock();
  
  StringBuilder ret = new StringBuilder();
  foreach(byte b in ms.ToArray())
  {
  ret.AppendFormat("{0:X2}", b);
  }
  ret.ToString();
  return ret.ToString();
  }
  
  ///
  /// DEC 解密过程
  ///
  public string Decrypt(string pToDecrypt, string sKey)
  {
  DESCryptoServiceProvider des = new DESCryptoServiceProvider();
  
  byte[] inputByteArray = new byte[pToDecrypt.Length / 2];
  for(int x = 0; x < pToDecrypt.Length / 2; x )
  {
  int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
  inputByteArray[x] = (byte)i;
  }
  
  des.Key = ASCIIEncoding.ASCII.GetBytes(sKey); //建立加密对象的密钥和偏移量,此值重要,不能修改
  des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
  MemoryStream ms = new MemoryStream();
  CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(),CryptoStreamMode.Write);
  
  cs.Write(inputByteArray, 0, inputByteArray.Length);
  cs.FlushFinalBlock();
  
  StringBuilder ret = new StringBuilder(); //建立StringBuild对象,CreateDecrypt使用的是流对象,必须把解密后的文本变成流对象
  
  return System.Text.Encoding.Default.GetString(ms.ToArray());
  }
  
  ///
  /// 检查己加密的字符串是否与原文相同
  ///
  public bool ValidateString(string EnString, string FoString, int Mode)
  {
  switch (Mode)
  {
  default:
  case 1:
  if (Decrypt(EnString,_QueryStringKey) == FoString.ToString())
  {
  return true;
  }
  else
  {
  return false;
  }
  case 2:
  if (Decrypt(EnString,_PassWordKey) == FoString.ToString())
  {
  return true;
  }
  else
  {
  return false;
  }
  }
  }
  }
  }
  
  类中URL及帐号加密使用了不同的KEY。调用URL加密过程如下:
  EIP.Framework.Security objSecurity = new EIP.Framework.Security();
  objSecurity.EncryptQueryString(''待加密的字符串'');
  
  解密:objSecurity.DecryptQueryString(''传递过来的参数);
  
  

上一篇:使用Windows XP 及IIS 5.1配置Web服务器   下一篇:用SQL Server为Web浏览器提供图像(三)


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·用SQL Server为Web浏览器提供图像(三)
·使用Windows XP 及IIS 5.1配置Web服务器
·用PWS建立自己的Web服务器
·用SQL Server为Web浏览器提供图像(四)
·用SQL Server为Web浏览器提供图像(二)
·让Web站点适应Windows XP Service Pack 2
·用SQL Server为Web浏览器提供图像(一)
·IIS服务器的备份和移植
·如何在Access 2002 中进行 Web的具体开发
·建立企业自己的Web网站
·为脱机数据访问创建基于 Web 的应用程序
·使用反向代理技术保护Web服务器
·IIS服务器组建攻略
·Web开发中用sql语句完成分页的高效率方法
·win2000上怎么装PHP+MYSQL(IIS版)
·使用SQLServer将现有代码作为Web服务提供
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·WEB服务器流量超负载:如何分散解决?
·Frontpage服务器扩充程序
·“http 500内部服务器错误”的解决方法
·Windows2003校园Web服务器常见问题(图)
·资深网管教你打造SSL加密的安全站点1(
·资深网管教你打造SSL加密的安全站点2(
·资深网管教你打造SSL加密的安全站点3(
·资深网管教你打造SSL加密的安全站点4(
·用Server 2003建匿名访问服务器(图)
·资深网管教你WIN2K下如何一机多"站"一(
·新手入门之认识典型Web服务器(图)
·资深网管教你WIN2K下如何一机多"站"二(
  阅读排行
·Apache php mysql在windows下的安装与
·Win2003服务器组网、安全管理全攻略二
·IIS配置及安全访问控制策略详解
·Win2003服务器组网、安全管理全攻略一
·WEB专用服务器的安全设置的实战技巧
·Win2003实现Web虚拟网站操作篇
·从权限入手解决IIS PHP环境故障
·IIS5.1和IIS6.0一些显著的重要区别
·解答终端服务与远程桌面区别(组图)
·网管经验谈-巧妙搭建IIS下PHP环境
·Win2000IIS安全构建指南
·使用IIS5.0调整Web服务器的艺术与科学
·巧施妙手,排除IIS特殊管理困惑
·Longhorn下的IIS是Apache杀手么?
·Windows2003基本的web服务器安全设置
网摘收藏: