`
冷寒冰
  • 浏览: 251785 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

查询字符串加密解密

阅读更多

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

 

using System.Xml.Linq;
using System.Security.Cryptography;
using System.IO;
using System.Text;
using System.Collections.Specialized;
using System.Web.UI;

/// <summary>
///StringHelpers 的摘要说明
/// </summary>
public class StringHelpers
{
  
    #region constants
    private const char QUERY_STRING_DELIMITER='&';
    #endregion
    #region Members
    private static RijndaelManaged _cryptoProvider;
    //128 bit encyption:DO NOT Change
    private static readonly byte[] key = { 18, 19, 8, 24, 36, 22, 4, 22, 17, 5, 11, 9, 13, 15, 06, 23 };
    //initialize vectors(初始化向量)
    private static readonly byte[] IV = { 14, 2, 16, 7, 5, 9, 17, 8, 4, 47, 16, 12, 1, 32, 25, 18 };
    #endregion

    #region  constructor
    public StringHelpers()
    {
        _cryptoProvider = new RijndaelManaged();
        _cryptoProvider.Mode = CipherMode.CBC;
        _cryptoProvider.Padding = PaddingMode.PKCS7;
       
    }
    #endregion

    #region Methods
    /// <summary>
    /// Encrypts a given string.
    /// </summary>
    /// <param name="unencryptedString"></param>
    /// <returns>returns an encrypted string</returns>
    public static string Encrypt(string unencryptedString)
    {
        byte[] bytIn = ASCIIEncoding.ASCII.GetBytes(unencryptedString);
        //create m MemoryStream
        MemoryStream ms = new MemoryStream();
        //create  crypto(密码 加密 模块) stream that encrypts a stream
        CryptoStream cs = new CryptoStream(ms, _cryptoProvider.CreateEncryptor(key, IV), CryptoStreamMode.Write);
        //write content into MemoryStream
        cs.Write(bytIn, 0, bytIn.Length);
        cs.FlushFinalBlock();
        byte[] bytOut = ms.ToArray();
        return Convert.ToBase64String(bytOut);
    }
    /// <summary>
    /// Decrypt a given string.
    /// </summary>
    /// <param name="encryptedString"></param>
    /// <returns></returns>
    public static string Decrypt(string encryptedString)
    {
        if (encryptedString.Trim().Length != 0)
        {
            byte[] bytIn = Convert.FromBase64String(encryptedString);
            //created a memorystream
            MemoryStream ms = new MemoryStream(bytIn, 0, bytIn.Length);
            //create a cryptoStream that decrypts the data
            CryptoStream cs = new CryptoStream(ms, _cryptoProvider.CreateDecryptor(key, IV), CryptoStreamMode.Read);
            //read the crypto stream
            StreamReader sr = new StreamReader(cs);
            return sr.ReadToEnd();

        }
        else
        {
            return "";
        }
    }

    public static NameValueCollection DecryptQueryString(string queryString)
    {
        if (queryString.Length != 0)
        {
            //Decode the string
            string decodedQueryString = HttpUtility.UrlDecode(queryString);
            //Decrypt the string
            string decryptedQueryString = StringHelpers.Decrypt(decodedQueryString);
            //Now split the string based on each parameter
            string[] actionQueryString = decryptedQueryString.Split(new char[] { QUERY_STRING_DELIMITER });
            NameValueCollection newQueryString = new NameValueCollection();
            //loop around for each name value pair.
            for (int index = 0; index < actionQueryString.Length; index++)
            {
                string[] queryStringItem = actionQueryString[index].Split(new char[] { '=' });
                newQueryString.Add(queryStringItem[0], queryStringItem[1]);
            }
            return newQueryString;
        }
        else
        {
            //No query string was passed in.
            return null;
        }
    }

    public static string EncryptQueryString(NameValueCollection queryString)
    {
        //create a string for each value in the query string passed in.
        string tempQueryString = "";
        for (int index = 0; index < queryString.Count; index++)
        {
            tempQueryString+=queryString.GetKey(index)+"="+queryString[index];
            if (index != queryString.Count - 1)
            {
                tempQueryString += QUERY_STRING_DELIMITER;
            }
        }
        return EncryptQueryString(tempQueryString);
    }
    public static string EncryptQueryString(string queryString)
    {
        return "?" + HttpUtility.UrlEncode(StringHelpers.Encrypt(queryString));
    }
    #endregion
}

分享到:
评论

相关推荐

    c++字符串加密解密

    学习了C++中的字符串加密解密后,可以进一步研究其他加密算法,如AES、RSA等,或者了解非对称加密和哈希函数等信息安全相关的概念和技术。此外,也可以尝试将加密解密技术应用到实际项目中,如网络通信的安全传输、...

    QT C++ AES字符串加密解密类库,引入即可使用

    QT C++ AES字符串加密解密类库是一种在C++编程环境中使用QT框架实现的高级加密标准(AES)加密和解密工具。QT是一个流行的开源跨平台应用开发框架,广泛应用于桌面、移动和嵌入式系统。AES是目前广泛应用的对称加密...

    js中对字符串加密解密算法

    js中对字符串加密解密算法

    EncryptTools 字符串 加密 解密 工具

    "EncryptTools 字符串 加密 解密 工具"是一个专为处理字符串加密和解密任务设计的实用程序。这个工具可能包含了多种加密算法,帮助用户对敏感的文本信息进行安全处理,防止未经授权的访问或窃取。 字符串加密是一种...

    vb 简单字符串加密解密函数 避免乱码

    VBScript中的字符串加密解密函数 在VBScript(Visual Basic Script Edition)中,可以通过编写特定的函数来实现字符串的加密与解密操作。本例中提供的`encrypt`函数接受两个参数:`miyao`(密钥) 和 `stext`(待加密...

    字符串加密解密DLL链接库

    本加密目标完成短文本(100个字符内),并没有测试过大文本,长字符串的情况。 分3组: 第一组:不需要解密方事先获悉KEY。应用场景是程序把需要关键信息加密后保存在配置文件中,防止被第三人打开配置文件而获取信息...

    PB字符串加密、解密函数

    在IT行业中,字符串加密与解密是信息安全领域的重要组成部分,主要目的是保护数据的隐私和安全性。PowerBuilder(PB)是一种流行的编程环境,尤其在开发数据库应用程序时被广泛使用。在这个背景下,PB字符串加密和...

    一套简单实用的字符串加密解密Demo(含源码)

    本资源提供了一套自编的字符串加密解密Demo,包含了源码,可以帮助开发者实现对重要信息的加密存储和安全传输。下面将详细介绍这套加密解密算法及其应用。 一、加密解密原理 加密是一种将明文转换为看似随机的不可...

    php字符串加密解密的类

    这个名为“php字符串加密解密的类”的工具提供了一种方法来处理敏感信息,确保它们在传输或存储时不会被未授权的用户访问。这里我们将深入探讨PHP中的字符串加密解密原理,以及base64_encode()函数在其中的作用。 ...

    任意长度的字符串加密解密(DES)

    基于DES任意长度字符串的加密和解密,MFC界面

    WinForm字符串加密解密小程序

    在这个“WinForm字符串加密解密小程序”中,我们主要探讨的是如何在Windows Forms环境下实现字符串的加密与解密功能。 首先,字符串加密是信息安全领域的一个关键概念,其目的是保护数据不被未经授权的人员读取或...

    字符串加密解密

    在IT领域,字符串加密解密是一项至关重要的技术,主要用于保护数据的安全性和隐私。字符串加密是对明文字符串进行处理,将其转换成无法直接识别的密文,以防止未经授权的访问或泄露。而解密则是将密文恢复为原始的...

    字符串加密解密工具

    在IT领域,字符串加密解密是信息安全的重要组成部分,主要用于保护数据的隐私性和完整性。字符串加密是一种将可读的明文字符串转化为不可读的密文,防止未经授权的访问者获取信息。解密则是加密的逆过程,将密文恢复...

    PHP字符串加密和解密

    PHP字符串加密和解密,可以把字符串加密,还可以解密

    一个简单的字符串加密解密算法(C#)

    一个简单的字符串加密解密算法,使用C#语言实现。。。

    VB6.0加密解密字符串

    加密解密字符串.exe huanyin下载

    C#对字符串加密解密dll源码

    描述中提到的"C#对字符串加密解密dll源码"可能包含一个自定义的加密类库,这个库可能封装了加密和解密的逻辑,允许开发者通过简单调用方法并提供密钥来完成操作。在实际应用中,用户可能需要自定义密钥以增加安全性...

    mfc字符串加解密

    总之,MFC的`CString`字符串加密解密是软件开发中的一个重要环节,它涉及到数据安全和隐私保护。通过结合MFC与加密库,我们可以创建安全的字符串处理机制,确保敏感信息在传输和存储过程中的安全性。

    C#数据库连接字符串加密解密类

    .net下C#数据库连接字符串在配置文件中的加密解密类

    字符串加密解密jar包

    在IT行业中,字符串加密解密是一项非常重要的技术,特别是在数据安全和隐私保护方面。"字符串加密解密jar包"是一个专门为处理字符串加密和解密任务而设计的Java应用程序集(jar包)。它允许用户对给定的字符串进行...

Global site tag (gtag.js) - Google Analytics