`
xylw
  • 浏览: 60251 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
文章分类
社区版块
存档分类
最新评论

asp.net 加密解密URL

 
阅读更多
网上很多人在问怎么实现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(''传递过来的参数);
分享到:
评论

相关推荐

    ASP.NET url参数传递加密及解密方法

    在ASP.NET框架中,我们可以利用内置的加密解密工具来实现这一功能。以下是一些关于如何在ASP.NET中进行URL参数加密和解密的关键知识点: 1. **加密需求**:在URL中传递敏感信息时,如用户ID、搜索查询或任何个人...

    网站url加密解密asp.net

    网站url加密解密asp.net .net url加密网站url加密解密asp.net .net url加密网站url加密解密asp.net .net url加密网站url加密解密asp.net .net url加密网站url加密解密asp.net .net url加密

    asp.net web URL 伪装或加密

    例如,可以使用`MachineKey.Protect()`和`MachineKey.Unprotect()`方法来加密和解密URL参数。需要注意的是,为了保证同一台服务器上的不同应用能正确解密,必须配置一致的机器密钥(MachineKey)。 在实践过程中,...

    asp.net 加密类

    在ASP.NET中,加密是确保数据安全的关键技术,它用于保护敏感信息,如用户密码、个人信息等,防止未经授权的访问。本文将深入探讨ASP.NET中的加密类以及如何利用它们进行地址参数加密。 1. **加密基础** - **加密...

    asp.net加解密和取拼音

    在这个主题中,“asp.net加解密和取拼音”涉及了两个重要的技术方面:数据加密和解密,以及汉字到拼音的转换。 **一、加解密** 在 ASP.NET 中,数据的安全性至关重要,尤其是在传输敏感信息时。加解密是保护这些...

    ASP源码—网址在线加密解密,网址加密解密方法及工具.zip

    ASP.NET中的URL重写机制(如URLRoutingModule)可以用来改变URL的外观,同时也提供了在URL中隐藏实际参数的机会,这在某种程度上可以视为一种加密方式,因为它可以防止用户直接修改URL以访问非授权页面。...

    ASP.NET.C英文原著经典

    8. **安全与身份验证**:介绍ASP.NET的安全特性,如身份验证、授权和加密解密,以及如何保护Web应用不受攻击。 9. **部署与性能优化**:讲解如何将ASP.NET应用部署到IIS服务器,以及性能监控和优化策略。 10. **...

    ASP.NET部分笔记

    - ASP.NET提供了身份验证(Forms Authentication)、授权(Role-Based Authorization)和加密解密服务,保障应用安全。 10. **ASP.NET Core** - ASP.NET Core是ASP.NET的新一代版本,跨平台且性能更高,集成了MVC...

    asp.net入门经典

    理解ASP.NET的安全性机制,如身份验证、授权、加密解密,以及防止SQL注入和XSS攻击的方法,是保障应用程序安全的关键。 总结,ASP.NET入门经典涵盖了从基本概念、开发环境设置到实际应用开发的全过程,是初学者系统...

    【ASP.NET编程知识】基于.net4.0实现IdentityServer4客户端JWT解密.docx

    ASP.NET 编程知识基于 .NET 4.0 实现 IdentityServer4 客户端 JWT 解密 本文档主要讲述了如何基于 .NET 4.0 实现 IdentityServer4 客户端 JWT 解密。IdentityServer4 是一个开源的身份验证服务器框架,它提供了基于...

    asp.net通用类

    7. **URL重写类**:ASP.NET通用类中的URL重写模块可以改善网站的SEO友好性,将不友好的URL转换为更易于理解和分享的形式。这通常涉及到正则表达式和HTTP模块的使用。 8. **线程和异步操作类**:在多用户环境中,...

    web.config加密解密工具(三个软件集合)

    在IT行业中,尤其是在Web开发领域,`web.config`文件是一个至关重要的配置文件,它用于存储ASP.NET应用程序的各种配置信息,如数据库连接字符串、身份验证设置、URL重写规则等。当这些信息涉及到安全性,比如数据库...

    浅析基于asp.net的网站安全漏洞及防范

    ### 浅析基于ASP.NET的网站安全漏洞及防范 #### 摘要 本文结合自行开发的远程教育训练系统过程中出现的安全测试问题,探讨了在ASP.NET开发环境下常见的几种安全漏洞,包括SQL注入式攻击、查询字符串式数据传递、绕...

    基于ASP.NET实现的QueryString进行安全加密处理类库函数

    为了保障用户数据的安全和应用的稳定性,基于C#和ASP.NET开发的QueryString加密处理类库函数是至关重要的。这类函数的主要目标是对QueryString中的参数进行加密,以防止中间人攻击、数据篡改等安全问题。 首先,...

    ASP.NET4.0从入门到精通课件(18章)

    探讨ASP.NET的安全特性,如身份验证、授权、加密解密和防止XSS和CSRF攻击。 第15章:Web服务与WCF 了解如何创建和消费Web服务,以及使用Windows Communication Foundation (WCF)来构建面向服务的应用程序。 第16章...

    ASP.NET 4.0专家技术手册

    7. **安全特性**:包括身份验证、授权、加密和解密等,ASP.NET 4.0提供了一整套安全机制,以保护应用程序免受攻击。 8. **AJAX支持**:ASP.NET 4.0加强了AJAX功能,如UpdatePanel的改进,增强了异步更新的能力,...

    ASP 源代码加密解密工具包

    在ASP源代码加密解密工具包中,包含了两个主要的执行文件:DecodeScripting_Pro.exe和DecodeScripting.exe,以及一个说明文件Haicode.Net说明.txt和一个链接到源码网的URL。 1. **ASP源代码加密**: - ASP源代码...

    ASP.NET跨应用程序进行登录的解决

    ASP.NET 跨应用程序进行登录的解决方案主要涉及到的是.NET平台下的身份验证机制,特别是Forms身份验证。在.NET框架中,有三种主要的身份验证方式:Windows身份验证、Passport身份验证和Forms身份验证。对于这个问题...

    ASP.NET支付宝接口(可以直接用)

    开发者需要在支付宝开放平台注册并获取AppID、商户私钥以及支付宝公钥,这些用于加密和解密通信数据,确保交易安全。 3. **HTTP请求与响应**:在ASP.NET中,使用HttpClient类或者WebClient类可以发送HTTP请求到...

    ASP.Net微软官方教程

    9. **安全性**:涵盖身份验证、授权、加密解密、防止跨站脚本攻击(XSS)和跨站请求伪造(CSRF)等内容,帮助开发者构建安全的Web应用程序。 10. **性能优化**:包括缓存技术、页面和控件的优化策略,以及对异步...

Global site tag (gtag.js) - Google Analytics