怎么实现Web系统URL传输(表单提交)参数加密-zhuan
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;
}
}
}
}
}
http://blog.csdn.net/hemudu/archive/2005/05/13/374294.aspx
网上很多人在问怎么实现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(''传递过来的参数);
转载于:https://www.cnblogs.com/Nina-piaoye/archive/2006/09/13/502694.html
怎么实现Web系统URL传输(表单提交)参数加密-zhuan相关推荐
- 输入值/表单提交参数过滤,防止sql注入或非法攻击的方法
输入值/表单提交参数过滤,防止sql注入或非法攻击的方法: /** * 过滤sql与php文件操作的关键字 * @param string $string * @r ...
- php:输入值/表单提交参数过滤,防止sql注入或非法攻击的方法
输入值/表单提交参数过滤,防止sql注入或非法攻击的方法: /*** 过滤sql与php文件操作的关键字* @param string $string* @return string* @author ...
- javajavascript:void(‘h2‘)WEB(jsp基本语法表单提交)
一.jsp简介 1. 什么是jsp jsp全名为 Javh2a Server Pages 中文名叫 java服务器页面 它是在传统的网页HTML文件(*.html,*. ...
- web手动进行Form表单提交
最近的一个项目涉及到多文件上传,同时还不让用Form表单提交其他数据.蛋疼... 想到一个办法就是,先用ajax提交数据,然后返回数据库的id主键(mysql数据库),然后再js回调函数中进行表单文件 ...
- 织梦ajax表单提交参数错误,【织梦二次开发】织梦jquery+ajax方式提交自定义表单...
我们在dedecms教程中学到很多,比如可以借助jquery ajax提交dedecms自定义表单到后台.此例只做为参考,实际项目中根据自己的情况酌情修改. html部分: 姓名: 电话: 留言: j ...
- PHP表单提交参数验证类(可修改)
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');/*** 表单验证类(参考 原ci CI_Fo ...
- 表单提交 参数为中文时乱码解决办法
表单代码: <form class="well form-search" id="searchInfoForm" target="_blank& ...
- 360急速浏览器BUG,POST表单提交参数丢失
今天我在做支付宝充值的时候发现在360急速浏览器下面业务处理页面获取Request.Form参数为空,一开始我还以为是自己参数没有传递过去.然后就开始了1小时的deBUG 下面是页面流程 A→B→C ...
- form表单提交数据如何拿到返回值
form表单提交数据如何拿到返回值 文章目录 form表单提交数据如何拿到返回值 @[TOC](文章目录) 前言 一.如何拿到返回值 二.在这个过程中也会遇到一些问题 总结 前言 使用form表单提交 ...
最新文章
- 2020新款笔记本送一台!4核+8G+512固态
- 喜大普奔!GitHub官方文档推出中文版啦!
- CSS基础知识(颜色、伪类、盒子模型)
- shell中的条件语句
- python 惰性序列_讨论 - 廖雪峰的官方网站
- Device /dev/ttyUSB0 is locked.解决办法
- php语言的四种循环控制语句,PHP循环控制语句
- 飞行姿态角度表示: heading pitch roll
- asp.net 类似 webbrowser_一款类似经典的FC的像素风忍者游戏
- 微信公众平台可为市民鉴别万余药品真伪
- Petalinux配置
- 怎么把dwg格式转换成pdf格式?
- mysql.sock被删除_mysql.sock文件丢失被删除解决方法
- 什么是EMC?什么是EMI?什么是EMS?电磁兼容详解(一)
- ios-弹窗输入六位密码
- 新支点ICG聚合路由器在新闻发布会直播的应用方案
- 基于matlab的MRC最大合并比误码率仿真,包括维特比译码,MRC,中继
- -- 40、查询选修“张三“老师所授课程的学生中,成绩最高的学生信息及其成绩
- IMAU 软件项目管理 期末复习总结 第六章
- 百度地图 key_百度地址智能解析amp;百度地图更新
热门文章
- 一篇文章告诉你:荣耀10 GT为什么叫全能旗舰
- hdu 5077 NAND(打表)2014 Asia regional 鞍山站 H题
- 0x5f3759df的推导
- IBM WebSphere MQ 系列(二)安装MQ
- DIV周边添加投影及背景固定
- cocos2dx 3.3final UserDefault有个坑?
- error: jump to label ‘XXXX’ [-fpermissive]
- make memuconfig的问题:'make menuconfig' requires the ncurses libraries
- 如何禁止用户名,密码自动填充
- 与 Linux 一起学习:学习地理