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++中的字符串加密解密后,可以进一步研究其他加密算法,如AES、RSA等,或者了解非对称加密和哈希函数等信息安全相关的概念和技术。此外,也可以尝试将加密解密技术应用到实际项目中,如网络通信的安全传输、...
QT C++ AES字符串加密解密类库是一种在C++编程环境中使用QT框架实现的高级加密标准(AES)加密和解密工具。QT是一个流行的开源跨平台应用开发框架,广泛应用于桌面、移动和嵌入式系统。AES是目前广泛应用的对称加密...
js中对字符串加密解密算法
"EncryptTools 字符串 加密 解密 工具"是一个专为处理字符串加密和解密任务设计的实用程序。这个工具可能包含了多种加密算法,帮助用户对敏感的文本信息进行安全处理,防止未经授权的访问或窃取。 字符串加密是一种...
VBScript中的字符串加密解密函数 在VBScript(Visual Basic Script Edition)中,可以通过编写特定的函数来实现字符串的加密与解密操作。本例中提供的`encrypt`函数接受两个参数:`miyao`(密钥) 和 `stext`(待加密...
本加密目标完成短文本(100个字符内),并没有测试过大文本,长字符串的情况。 分3组: 第一组:不需要解密方事先获悉KEY。应用场景是程序把需要关键信息加密后保存在配置文件中,防止被第三人打开配置文件而获取信息...
在IT行业中,字符串加密与解密是信息安全领域的重要组成部分,主要目的是保护数据的隐私和安全性。PowerBuilder(PB)是一种流行的编程环境,尤其在开发数据库应用程序时被广泛使用。在这个背景下,PB字符串加密和...
本资源提供了一套自编的字符串加密解密Demo,包含了源码,可以帮助开发者实现对重要信息的加密存储和安全传输。下面将详细介绍这套加密解密算法及其应用。 一、加密解密原理 加密是一种将明文转换为看似随机的不可...
这个名为“php字符串加密解密的类”的工具提供了一种方法来处理敏感信息,确保它们在传输或存储时不会被未授权的用户访问。这里我们将深入探讨PHP中的字符串加密解密原理,以及base64_encode()函数在其中的作用。 ...
基于DES任意长度字符串的加密和解密,MFC界面
在这个“WinForm字符串加密解密小程序”中,我们主要探讨的是如何在Windows Forms环境下实现字符串的加密与解密功能。 首先,字符串加密是信息安全领域的一个关键概念,其目的是保护数据不被未经授权的人员读取或...
在IT领域,字符串加密解密是一项至关重要的技术,主要用于保护数据的安全性和隐私。字符串加密是对明文字符串进行处理,将其转换成无法直接识别的密文,以防止未经授权的访问或泄露。而解密则是将密文恢复为原始的...
在IT领域,字符串加密解密是信息安全的重要组成部分,主要用于保护数据的隐私性和完整性。字符串加密是一种将可读的明文字符串转化为不可读的密文,防止未经授权的访问者获取信息。解密则是加密的逆过程,将密文恢复...
PHP字符串加密和解密,可以把字符串加密,还可以解密
一个简单的字符串加密解密算法,使用C#语言实现。。。
加密解密字符串.exe huanyin下载
描述中提到的"C#对字符串加密解密dll源码"可能包含一个自定义的加密类库,这个库可能封装了加密和解密的逻辑,允许开发者通过简单调用方法并提供密钥来完成操作。在实际应用中,用户可能需要自定义密钥以增加安全性...
总之,MFC的`CString`字符串加密解密是软件开发中的一个重要环节,它涉及到数据安全和隐私保护。通过结合MFC与加密库,我们可以创建安全的字符串处理机制,确保敏感信息在传输和存储过程中的安全性。
.net下C#数据库连接字符串在配置文件中的加密解密类
在IT行业中,字符串加密解密是一项非常重要的技术,特别是在数据安全和隐私保护方面。"字符串加密解密jar包"是一个专门为处理字符串加密和解密任务而设计的Java应用程序集(jar包)。它允许用户对给定的字符串进行...