http://expert.csdn.net/Expert/topic/2989/2989325.xml?temp=.7789728
解决方案 »
- C# 如何获取鼠标选中文本内容
- C# winform 如何上传RAR文件到FTP服务器! 跪求!!
- 菜鸟求解
- 如何用C#语句判断gridview里checkbox是否选中
- 查询Access表主键
- 这里有多少人用过hexiesoft的ERP系统?
- 弟兄们有空帮忙看看!从listview拖拽到datagrid如何实现?
- informix中新建了一个表,但是c#用informix cli 2.5去查询的时候查不到,用Java查就可以查到,是什么原因
- 一个关于tcpClient 的问题,请高手帮忙!!!!!!!!!!!!急!!!!!!!!!!
- dataGrid 去选定行值的问题
- 我发现.NET不能跨windows平台开发
- 高手请教
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
//using System.Web.HttpUtility;
//调用任意构造函数后,用Encrypto()加密,用Decrypto() 解密
namespace Game2meCardWebLibs
{
/// <summary>
/// Secret 的摘要说明。
/// </summary>
public class Secret
{
private SymmetricAlgorithm mobjCryptoService;
private string Key;
private string iv;
/// <summary>
/// 对称加密类的构造函数
/// </summary>
public Secret()//默认构造函数 用默认的key, 和iv加密
{
mobjCryptoService = new RijndaelManaged();
Key = "Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7";
iv = "E4ghj*Ghg7!rNIfb&95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk";
}
public Secret(string key)//用默认的iv加密,带参数 key
{ mobjCryptoService = new RijndaelManaged();
if(key==null||key=="")
{
Key = "Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7";
}
else
{
Key = key;
iv = "E4ghj*Ghg7!rNIfb&95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk";
}
} public Secret(string key,string iv)//带 iv 和 key参数的构造函数
{ mobjCryptoService = new RijndaelManaged();
if(key==null||key=="")
Key = "Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7";
else
Key = key;
if(iv==null||iv=="")
iv = "E4ghj*Ghg7!rNIfb&95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk";
else
this.iv=iv;
}
/// <summary>
/// 获得密钥
/// </summary>
/// <returns>密钥</returns> private byte[] GetLegalKey()//检查并生成合法的密钥
{
string sTemp = Key;
if (sTemp.Length > 32)
sTemp = sTemp.Substring(0, 32);
else if (sTemp.Length < 32)
sTemp = sTemp.PadRight(32, ' ');
return ASCIIEncoding.ASCII.GetBytes(sTemp);
} /// <summary>
/// 获得初始向量IV
/// </summary>
/// <returns>初试向量IV</returns>
private byte[] GetLegalIV()//检查并生成合法的初始化向量
{
string sTemp = iv;
if (sTemp.Length > 16)
sTemp = sTemp.Substring(0, 16);
else if (sTemp.Length < 16)
sTemp = sTemp.PadRight(16, ' ');
return ASCIIEncoding.ASCII.GetBytes(sTemp);
}
/// <summary>
/// 加密方法
/// </summary>
/// <param name="Source">待加密的串</param>
/// <returns>经过加密的串</returns>
public string Encrypto(string Source)
{ if (Source=="") return null;
if(Source==null)return null;
byte[] bytIn = UTF8Encoding.UTF8.GetBytes(Source);
MemoryStream ms = new MemoryStream();
mobjCryptoService.Key = GetLegalKey();
mobjCryptoService.IV = GetLegalIV();
ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor();
CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);
cs.Write(bytIn, 0, bytIn.Length);
cs.FlushFinalBlock();
ms.Close();
byte[] bytOut = ms.ToArray();
return Convert.ToBase64String(bytOut);
}
/// <summary>
/// 解密方法
/// </summary>
/// <param name="Source">待解密的串</param>
/// <returns>经过解密的串</returns>
public string Decrypto(string Source)
{
if (Source=="") return null;
if(Source==null)return null;
byte[] bytIn = Convert.FromBase64String(Source);
MemoryStream ms = new MemoryStream(bytIn, 0, bytIn.Length);
mobjCryptoService.Key = GetLegalKey();
mobjCryptoService.IV = GetLegalIV();
ICryptoTransform encrypto = mobjCryptoService.CreateDecryptor();
CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);
StreamReader sr = new StreamReader(cs);
return sr.ReadToEnd();
} public string KEY{//用此属性来修改key
get{
return Key;
}
set{ if(value!=null||value!="")
Key=value;
else
Key="Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7"; }
} public string IV//用此属性来修改iv
{
get
{return iv;
}
set
{
if(value!=null||value!="")
iv=value;
else
iv="E4ghj*Ghg7!rNIfb&95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk";
}
} }
///////////////////////////////////////////////new class
public class Scripter
{
public Scripter()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public static string Write(string code)
{
//trim(code);
code=code.Trim();
code=code.Replace(" ","");
code=code.Replace("\"","\'");
code=code.Replace("\n","");
code=code.Replace("\r","");
return (HttpUtility.HtmlEncode(code));
} }
}