网上很多人在问怎么实现Web系统URL传输(表单提交)参数加密。例如:要进行一个用户帐号编辑,要传递用户的ID,URL如下:http://localhost/mysystem/editAccounts.aspx?ID=2 
但又不想让别人知道这个用户的ID为2,恶意的使用者可能还会将2修改,改为别的用户ID。

View Code

using System; using System.Security.Cryptography; using System.IO; using System.Text; 

namespace EIP.Framework ...{ public class Security ...{ string _QueryStringKey = "abcdefgh"; //URL传输参数加密Key string _PassWordKey = "hgfedcba"; //PassWord加密Key 

public Security() ...{ } 

public string EncryptQueryString(string QueryString) ...{ return Encrypt(QueryString,_QueryStringKey); } 

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; } } } } } 

转载于:https://www.cnblogs.com/KohnKong/articles/2216655.html

url加密解密的一个cs类相关推荐

  1. 各种加密解密函数(URL加密解密、sha1加密解密、des加密解密)

    普通hash函数如md5.sha1.base64等都是不可逆函数.虽然我们利用php可以利用这些函数写出可逆函数来.但是跨语言时这类可逆函数非常难搞定.所以这时尽量使用AES DES RC4 Rabb ...

  2. url html 加密 php,php实现URL加密解密

    这篇文章主要介绍了php实现URL加密解密的方法,结合实例形式分析了php针对URL字符串进行加密解密操作的相关技巧,需要的朋友可以参考下 具体如下: 无标题文档 function query_enc ...

  3. 【PHP】URL加密解密(可逆)

    URL加密解密(可逆) 加密:urlencode urlencode ( string $str ) : string 此函数便于将字符串编码并将其用于 URL 的请求部分,同时它还便于将变量传递给下 ...

  4. php常用url加密方法,php实现URL加密解密的方法

    本文实例讲述了php实现URL加密解密的方法.分享给大家供大家参考,具体如下: 无标题文档 function query_encode($sQuery) {//加密链接 if(strlen($sQue ...

  5. java url加密解密,java URL 编码解码,该如何解决

    java URL 编码解码 我写了两个接口 一个是对字符串加密 的,一个是解密的  .加密的可以通过调用接口生成加密字符串如下: Oc0PEwKrLzHqT25hYLhWP5wlk5HROPJoWC3 ...

  6. PHP中的URL加密解密加密

    1)URL加密代码--主要是urlencode()函数 <?php $url1=urlencode('学习PHP '); echo "index.php?id=".$url1 ...

  7. c#进行url加密解密与jquery前端加密解密

    前言 当我们程序发布于服务器上会遇到前端报错.因为有特殊原因导致. 此时需要对传输的数据,进行加密,后台进行解密处理 C#进行url加密与解密 HttpUtility.UrlEncode(val); ...

  8. java url加密解密,Java加密解密 -Jasypt

    1. download url http://www.jasypt.org/download.html 2. 依赖 jar jasypt-1.9.0.jar 3. 加密 // 默认加密/解密算法是 P ...

  9. 在Java中DES加密/解密的实现[工具类]

    使用前需导入Crypto包: <dependency><groupId>org.springframework.security</groupId><arti ...

最新文章

  1. ef mysql 事务_事务 - EF Core | Microsoft Docs
  2. egret 发布android原生项目(一)打包apk
  3. 云拨测助力节卡机器人 全面优化海外网站性能
  4. vue 封装dialog_自己封装dialog组件
  5. kotlin之重载运算符(十一)
  6. 如何把一个PDF文件内的部分页码对应的内容导出成一个新的PDF文件
  7. Linux C++线程池实例
  8. linux获取连续数组下标值,shell 数组,双层循环打印变量
  9. unix文件描述符——socket
  10. 面试题 10.09. 排序矩阵查找
  11. 机器学习 —— 概率图模型(CPD)
  12. OpenCore引导配置说明第十三版-基于OpenCore-0.6.6正式版
  13. BZOJ4199: [Noi2015]品酒大会
  14. stm32f103c8t9控制TFT显示屏
  15. 刷爆朋友圈,码农月薪七万可以落户北京啦
  16. 编译原理 --- 语法分析概念,自上而下分析面临的问题以及如何消除左递归问题
  17. 使用Nodejs搭建一个简易的留言簿(完结)
  18. android 音频输出手动切换到听筒播放,Android-通过听筒播放音频
  19. 判断IE浏览器的文档模式以及浏览器模式
  20. 数据分析师招聘岗位分析

热门文章

  1. 数据结构 之 并查集
  2. golang中的strings.Compare
  3. MySQL支持的分区类型
  4. 面试腾讯我遇到了这题:数组全排列
  5. 口语学习Day8:今天聊聊微信有关的英语总结!
  6. 4.STM32中对USART1_Config()函数的理解(自定义)
  7. WebApi数据验证——编写自定义数据注解(Data Annotations)
  8. CentOS7安装Nginx及其相关
  9. 我们来谈谈那些智能家居里的语音对话设备
  10. Kali DNS枚举工具之dnsenum