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++的des 加密解密代码,vs2017编译通过,可打开debug目录下的exe,查看效果,适合参考与学习
QT C++ AES字符串加密解密类库,引入即可使用
本加密目标完成短文本(100个字符内),并没有测试过大文本,长字符串的情况。 分3组: 第一组:不需要解密方事先获悉KEY。应用场景是程序把需要关键信息加密后保存在配置文件中,防止被第三人打开配置文件而获取信息...
PB字符串加密、解密函数,非常好用。PB字符串加密、解密函数,非常好用。
关于字符串加密解密(des字符串加密解密)
js中对字符串加密解密算法
基于DES任意长度字符串的加密和解密,MFC界面
c#对字符串加密解密函数源代码 传入string返回加密后字符串 直接可用
PHP字符串加密和解密,可以把字符串加密,还可以解密
一个简单的字符串加密解密算法,使用C#语言实现。。。
一个php字符串加密解密的类,使用base64_encode()函数对字符串进行编码。设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层传输,例如电子邮件的主体。
加密解密字符串.exe huanyin下载
.net下C#数据库连接字符串在配置文件中的加密解密类
代码是linux下C代码. 测试结果:1 加密字符串:0123456789 加密后:BF351535D0C074C023539FAAB05DFAC2 解密后:0123456789 测试结果:2 加密字符串:111 加密后:CFF0BC43B3F385C8 解密后:111
AES字符串加密解密器1.0,AES字符串加密解密器1.0,AES字符串加密解密器1.0,AES字符串加密解密器1.0,AES字符串加密解密器1.0,AES字符串加密解密器1.0,AES字符串加密解密器1.0,AES字符串加密解密器1.0
Delphi 各种字符串的加密解密方法,含括2007版本和2012版本的加密解密方法
数据库链接字符串加密解密工具,很好用哦!