ASP.NET中的DEC加密解密过程

本文章分享自 青青果树园的博客,地址是:http://www.cnblogs.com/qqingmu/archive/2008/01/10/1034168.html

我们做网页时经常会遇到URL传输(表单提交)参数加密。
例如:要进行一个用户帐号编辑,要传递用户的ID,URL如下:http://localhost/mysystem/editAccounts.aspx?ID=2
但又不想让别人知道这个用户的ID为2,恶意的使用者可能还会将2修改,改为别的用户ID。加密传递的参数值可以解决问题。
1、以下是DEC加密、解密的函数。

加密过程:

 1  /**//// <summary>
 2         /// DEC 加密过程
 3         /// </summary>
 4         /// <param name="pToEncrypt">被加密的字符串</param>
 5         /// <param name="sKey">密钥(只支持8个字节的密钥)</param>
 6         /// <returns>加密后的字符串</returns>
 7         public string Encrypt(string pToEncrypt, string sKey)
 8         {
 9             //访问数据加密标准(DES)算法的加密服务提供程序 (CSP) 版本的包装对象
10             DESCryptoServiceProvider des = new DESCryptoServiceProvider(); 
11             des.Key = ASCIIEncoding.ASCII.GetBytes(sKey); //建立加密对象的密钥和偏移量
12             des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);  //原文使用ASCIIEncoding.ASCII方法的GetBytes方法
13
14             byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);//把字符串放到byte数组中
15
16             MemoryStream ms = new MemoryStream();//创建其支持存储区为内存的流 
17             //定义将数据流链接到加密转换的流
18             CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
19             cs.Write(inputByteArray, 0, inputByteArray.Length);
20             cs.FlushFinalBlock();
21             //上面已经完成了把加密后的结果放到内存中去
22
23             StringBuilder ret = new StringBuilder();
24             foreach (byte b in ms.ToArray())
25             {
26                 ret.AppendFormat("{0:X2}", b);
27             }
28             ret.ToString();
29             return ret.ToString();
30         }

解密过程:

 1  /**//// <summary>
 2         /// DEC 解密过程
 3        /// </summary>
 4         /// <param name="pToDecrypt">被解密的字符串</param>
 5         /// <param name="sKey">密钥(只支持8个字节的密钥,同前面的加密密钥相同)</param>
 6        /// <returns>返回被解密的字符串</returns>
 7         public string Decrypt(string pToDecrypt, string sKey)
 8         {
 9             DESCryptoServiceProvider des = new DESCryptoServiceProvider();
10
11             byte[] inputByteArray = new byte[pToDecrypt.Length / 2];
12             for (int x = 0; x < pToDecrypt.Length / 2; x++)
13             {
14                 int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
15                 inputByteArray[x] = (byte)i;
16             }
17
18             des.Key = ASCIIEncoding.ASCII.GetBytes(sKey); //建立加密对象的密钥和偏移量,此值重要,不能修改
19             des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
20             MemoryStream ms = new MemoryStream();
21             CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
22
23             cs.Write(inputByteArray, 0, inputByteArray.Length);
24             cs.FlushFinalBlock();
25
26             //建立StringBuild对象,createDecrypt使用的是流对象,必须把解密后的文本变成流对象
27             StringBuilder ret = new StringBuilder(); 
28
29             return System.Text.Encoding.Default.GetString(ms.ToArray());
30         }

2、 具体在程序中使用加密解密算法的例子如下:

1 在发送页面
2 Response.Redirect("~/GridView.aspx?ID=" + Encrypt("zlh","12345678"));
3
4 在接受页面
5 string acceptStr;
6 acceptStr = Decrypt(Request.QueryString["ID"],"12345678");
时间: 2024-10-11 23:06:23

ASP.NET中的DEC加密解密过程的相关文章

加密解密过程

1,首先来说说有关加密解密有关的信息 信息安全标准NIST(National Institute of Standards and Technology)美国国家标准与技术研究院 openssl有CIA C:保密性: 数据保密性 隐私性 A:完整性: 数据完整性 系统完整性 I:可用性 真实性:一个实体是真实的,可被验证的. 可追溯性:一旦被攻击,能够追溯攻击源在哪 2,OSI规定的X.800 1)安全攻击: 被动攻击:窃听 主动攻击:1,伪装 2,重播 3,消息修改 4,拒绝攻击等 2)安全服

加密 解密过程详解及openssl自建CA &nbsp;

            加密 解密过程详解及openssl自建CA 为了数据信息能够安全的传输要求数据要有一定的安全性那么数据的安全性包含哪些方面的特性呢?    NIST(美国信息安全署)做了如下的定义:    保密性:       1,数据的保密性 指的是数据或隐私不向非授权者泄漏                   2,隐私性  信息不被随意的收集    完整性:       1,数据的的完整性:信息或程序只能被指定或授权的方式改变不能被随意的             修改        

ASP.NET中几种加密方法

下面就是ASP.NET中几种加密方法.加密算法有两种,也就是上面提到的MD5和SHA1,这里我举的例子是以MD5为例,SHA1大致相同,只是使用的类不一样. MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由Mit Laboratory for Computer Science和Rsa data security inc的Ronald l. rivest开发出来,经md2.md3和md4发展而来.它的作用是让大容量信息在用数字签名软件签署私人密匙

golang实现aes-cbc-256加密解密过程记录

我为什么吃撑了要实现go的aes-cbc-256加密解密功能? 之前的项目是用php实现的,现在准备用go重构,需要用到这个功能,这么常用的功能上网一搜一大把现成例子,于是基于go现有api分分钟实现一对加密解密函数,你想得没错,一跑就失败,好了不废话了,go的aes-cbc实现由两个限制 1:面临两个问题 1:go秘钥长度必须是16/24/32 go源码如下,我们的秘钥长度是29,不符合啊 // NewCipher creates and returns a new cipher.Block.

javaScript base64算法的实现 与 java中的base64 加密 解密

前段时间,工作需要,需要用js和java配套的base64算法,奈何没找到,然后网上抄一套.用起来还是很有效的. 闲言少絮,直接上干货. js 版base 64 算法  base64.js var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; //将Ansi编码的字符串进行Base64编码 function encode64(input) { var output = &quo

解决项目中的RSA加密解密算法的实际案例

目前项目中在2个地方用到了RSA加密算法 1.一个地方时登录的时候,前端js做了RSA加密,然后后端RSA解密 2.H5移动端的url中存在RSA加密串 但是在时间压测中,主要的问题是H5请求的url中存在RSA加密串 登录的RSA逻辑: 在压测脚本 中 这个RSA登录密码加密是可以解决的,直接将所有的密码统一成RSA的加密串就可以 但是在H5端的url中存在这个RSA加密串,那么就需要解决这个问题 那么如果需要做性能压测,这个问题必须要解决,否则一些url请求是无法模拟的 通过上述的方法,就可

JAVA中使用AES加密解密

技术交流群: 233513714 /** * AES加密测试 * * @param str 加密参数 */ public void aesTest(String str) { log.info("[rsaTest获取请求:{}]", str); try { String encryptResult = AESUtil.encrypt(str, "123456"); log.info("[AES加密后的参数为:{}]", encryptResult

Java中使用BASE64加密&amp;解密

package com.bao.tools.encryption; import java.io.IOException; import org.junit.Test; import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder; /** * @title BASE64加密&解密 * @description * 邮件,HTTP协议,一般用户名及密码 * @author Administrator * @date 2015-7-16 *

asp.net中实现MD5加密、解密的方法

这个MD5加密.解密的方法会使用即可. 使用时的代码备忘:Response.Write(FormsAuthentication.HashPasswordForStoringInConfigFile("要加密的字符串", "MD5")); 以下是加密.解密的代码部分: /*用法 protected void Page_Load(object sender, EventArgs e) { //加密 this.Title = CEncrypt.DesEncrypt(&qu