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

web|加密|解密

网上很多人在问怎么实现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 KangSoft@Hotmail.com@Hotmail.com@hotmail.com
///
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(''传递过来的参数);

时间: 2024-09-22 10:29:40

WEB系统中加密\解密URL传输参数.的相关文章

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

网上很多人在问怎么实现Web系统URL传输(表单提交)参数加密.例如:要进行一个用户帐号编辑,要传递用户的ID,URL如下:http://localhost/mysystem/editAccounts.aspx?ID=2但又不想让别人知道这个用户的ID为2,恶意的使用者可能还会将2修改,改为别的用户ID.加密传递的参数值可以解决问题.以下是自己写的DEC加密.解密的基类.文件名:Security.CSusing System;using System.Security.Cryptography;

Web开发中局部刷新url地址如何改变,浏览器刷新之后页面跳转控制

问题描述 Web开发中局部刷新url地址如何改变,浏览器刷新之后页面跳转控制 如图,我想讲页面做成1,2,3块用div控制,当点击1处的DIV中树枝时同时改变div3的HTML和DIV2 的A处的说明,同时当前sub-bar保持展开状态,当点击浏览器的刷新按钮时控制页面的刷新还展示之前的状态,而不是跳转到初始化界面,该如何做?????请各路大神帮忙,谢谢!!!

PHP中加密解密函数与DES加密解密实例

 例子,php加密解密的例子 加密函数:   代码如下: /* *功能:对字符串进行加密处理 *参数一:需要加密的内容 *参数二:密钥 */ function passport_encrypt($str,$key){ //加密函数  srand((double)microtime() * 1000000);  $encrypt_key=md5(rand(0, 32000));  $ctr=0;  $tmp='';  for($i=0;$i<strlen($str);$i++){   $ctr=$

PHP中加密解密函数与DES加密解密

例子,php加密解密的例子  代码如下 复制代码 加密函数 /* *功能:对字符串进行加密处理 *参数一:需要加密的内容 *参数二:密钥 */ function passport_encrypt($str,$key){ //加密函数  srand((double)microtime() * 1000000);  $encrypt_key=md5(rand(0, 32000));  $ctr=0;  $tmp='';  for($i=0;$i<strlen($str);$i++){   $ctr=

如何在Web系统中快速便捷地实现认证和授权系统

访问控制与 RBAC 模型 访问控制 通常的多用户系统都会涉及到http://www.aliyun.com/zixun/aggregation/38609.html">访问控制,所谓访问控制,是指通过某种方式允许活限制用户访问能力及范围的一种方法.这主要是由于系统需要对关键资源进行保护,防止由于非法入侵或者误操作对业务系统造成破坏.简而言之,访问控制即哪些用户可以访问哪些资源. 一般而言,访问控制系统包括三个组成部分: 主体:发出访问请求的实体,通常指用户或者用户进程. 客体:被保护的资源

如何在施工物料管理Web系统中处理大量数据并显示

最近在开发施工物料管理系统,其中涉及大量的物料信息需要管理和汇总,数据量非常庞大.之前尝试自己通过将原始数据,加工处理建模,在后台代码中通过分组.转置再显示到 Web 页面中,但自己编写的代码量非常大,而且性能很差简直无法忍受.后来使用了矩表控件非常好的解决了需求,本文主要介绍之前如何通过代码将数据展现在页面中,以及使用矩表控件创建行列转置和动态列表格,并显示在网页中. 一.通过代码将数据展现在页面的步骤 1.行列转置代码片段: public static DataTable GetCrossT

在Linux系统中加密文件的方法

  1. oppnssl md5 加密字符串的方法 a.手动输入命令及过程如下: 代码如下: #openssl //在终端中输入openssl后回车. OpenSSL> md5 //输入md5后回车 123456 //接着输入123456,不要输入回车.然后按3次ctrl+d. 123456e10adc3949ba59abbe56e057f20f883e //123456后面的就是密文了 解释:为何在输入123456后不回车呢? 是因为openssl默认会把回车符当做要加密的字符串中的一个字符,

js中加密解密程序代码

 代码如下 复制代码 function MyDecode(str) { var i,k,str2=""; k=str.split("."); for(i=0;i<k.length;i++) { str2+=String.fromCharCode(k[i]^0x12); } return str2; } myrand="46.97.115"; WScript.echo(MyDecode(myrand)); function Encrypt(s

XML在Web应用中的优势体现

Web 的开始阶段是简单的网站(信息中介和信息发布的平台),随着Internet 和Intranent.Extranet的快速发展而发展成为各种应用的主要平台.Web在商业 .工业.银行.财政.教育.政府等领域产生了深远影响,这得益于Web标准化. 松散耦合.语言中立.平台无关性.开放性等特性的服务.Web服务需要XML(可 扩展标记语言).SOAP(简单对象访问协议.WSDL(Web服务描述语言)和UDDL( 统一描述.发现和集成协议)四大技术标准的支持.其中UDDI.SOAP和WSDL基于