网上很多人在问怎么实现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框架中,我们可以利用内置的加密解密工具来实现这一功能。以下是一些关于如何在ASP.NET中进行URL参数加密和解密的关键知识点: 1. **加密需求**:在URL中传递敏感信息时,如用户ID、搜索查询或任何个人...
网站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加密
例如,可以使用`MachineKey.Protect()`和`MachineKey.Unprotect()`方法来加密和解密URL参数。需要注意的是,为了保证同一台服务器上的不同应用能正确解密,必须配置一致的机器密钥(MachineKey)。 在实践过程中,...
在ASP.NET中,加密是确保数据安全的关键技术,它用于保护敏感信息,如用户密码、个人信息等,防止未经授权的访问。本文将深入探讨ASP.NET中的加密类以及如何利用它们进行地址参数加密。 1. **加密基础** - **加密...
在这个主题中,“asp.net加解密和取拼音”涉及了两个重要的技术方面:数据加密和解密,以及汉字到拼音的转换。 **一、加解密** 在 ASP.NET 中,数据的安全性至关重要,尤其是在传输敏感信息时。加解密是保护这些...
ASP.NET中的URL重写机制(如URLRoutingModule)可以用来改变URL的外观,同时也提供了在URL中隐藏实际参数的机会,这在某种程度上可以视为一种加密方式,因为它可以防止用户直接修改URL以访问非授权页面。...
8. **安全与身份验证**:介绍ASP.NET的安全特性,如身份验证、授权和加密解密,以及如何保护Web应用不受攻击。 9. **部署与性能优化**:讲解如何将ASP.NET应用部署到IIS服务器,以及性能监控和优化策略。 10. **...
- ASP.NET提供了身份验证(Forms Authentication)、授权(Role-Based Authorization)和加密解密服务,保障应用安全。 10. **ASP.NET Core** - ASP.NET Core是ASP.NET的新一代版本,跨平台且性能更高,集成了MVC...
理解ASP.NET的安全性机制,如身份验证、授权、加密解密,以及防止SQL注入和XSS攻击的方法,是保障应用程序安全的关键。 总结,ASP.NET入门经典涵盖了从基本概念、开发环境设置到实际应用开发的全过程,是初学者系统...
ASP.NET 编程知识基于 .NET 4.0 实现 IdentityServer4 客户端 JWT 解密 本文档主要讲述了如何基于 .NET 4.0 实现 IdentityServer4 客户端 JWT 解密。IdentityServer4 是一个开源的身份验证服务器框架,它提供了基于...
7. **URL重写类**:ASP.NET通用类中的URL重写模块可以改善网站的SEO友好性,将不友好的URL转换为更易于理解和分享的形式。这通常涉及到正则表达式和HTTP模块的使用。 8. **线程和异步操作类**:在多用户环境中,...
在IT行业中,尤其是在Web开发领域,`web.config`文件是一个至关重要的配置文件,它用于存储ASP.NET应用程序的各种配置信息,如数据库连接字符串、身份验证设置、URL重写规则等。当这些信息涉及到安全性,比如数据库...
### 浅析基于ASP.NET的网站安全漏洞及防范 #### 摘要 本文结合自行开发的远程教育训练系统过程中出现的安全测试问题,探讨了在ASP.NET开发环境下常见的几种安全漏洞,包括SQL注入式攻击、查询字符串式数据传递、绕...
为了保障用户数据的安全和应用的稳定性,基于C#和ASP.NET开发的QueryString加密处理类库函数是至关重要的。这类函数的主要目标是对QueryString中的参数进行加密,以防止中间人攻击、数据篡改等安全问题。 首先,...
探讨ASP.NET的安全特性,如身份验证、授权、加密解密和防止XSS和CSRF攻击。 第15章:Web服务与WCF 了解如何创建和消费Web服务,以及使用Windows Communication Foundation (WCF)来构建面向服务的应用程序。 第16章...
7. **安全特性**:包括身份验证、授权、加密和解密等,ASP.NET 4.0提供了一整套安全机制,以保护应用程序免受攻击。 8. **AJAX支持**:ASP.NET 4.0加强了AJAX功能,如UpdatePanel的改进,增强了异步更新的能力,...
在ASP源代码加密解密工具包中,包含了两个主要的执行文件:DecodeScripting_Pro.exe和DecodeScripting.exe,以及一个说明文件Haicode.Net说明.txt和一个链接到源码网的URL。 1. **ASP源代码加密**: - ASP源代码...
ASP.NET 跨应用程序进行登录的解决方案主要涉及到的是.NET平台下的身份验证机制,特别是Forms身份验证。在.NET框架中,有三种主要的身份验证方式:Windows身份验证、Passport身份验证和Forms身份验证。对于这个问题...
开发者需要在支付宝开放平台注册并获取AppID、商户私钥以及支付宝公钥,这些用于加密和解密通信数据,确保交易安全。 3. **HTTP请求与响应**:在ASP.NET中,使用HttpClient类或者WebClient类可以发送HTTP请求到...
9. **安全性**:涵盖身份验证、授权、加密解密、防止跨站脚本攻击(XSS)和跨站请求伪造(CSRF)等内容,帮助开发者构建安全的Web应用程序。 10. **性能优化**:包括缓存技术、页面和控件的优化策略,以及对异步...