url 怎么加密?
解决方案 »
- 求 附件下载(注明:数据库中存的不是路径)
- 送分题
- .net 大型oa 思道oa
- 登陆时,如果想要一周内不用登陆代码怎样写
- w3wp.exe占用CPU100%(急!!)(在线等候)
- 各位老大,我引用我的控件为什么会出错拉?
- 我在IIS中新建了一个站点,而没有使用默认的站点。在VS.net2003中创建WEB项目时,怎么样让它指向这个新建的站点
- 高手!!能否将报表的数据直接在客户端导出?无论什么格式,最好是vb 写的
- 建立web程序时出现以下错误,如何解决(iis我装了,也配置了)?
- 帮帮忙,如何在ASP.NET页面中调用华表插件?
- 关于Entity Framewrok4 性能问题的疑问
- 高手请进! slickUpload第三方控件问题
但又不想让别人知道这个用户的ID为2,恶意的使用者可能还会将2修改,改为别的用户ID。 -------------------------------------------------------------------------------- using System;
using System.Security.Cryptography;
using System.IO;
using System.Text; namespace EIP.Framework
...{
public class Security
...{
string _QueryStringKey = "abcdefgh"; //URL传输参数加密Key
string _PassWordKey = "hgfedcba"; //PassWord加密Key public Security()
...{
} public string EncryptQueryString(string QueryString)
...{
return Encrypt(QueryString,_QueryStringKey);
}
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(''传递过来的参数);
加密方法可用des等,还可使用HttpUtility.UrlEncode编码
public string SHA1(string source)
{
return FormsAuthentication.HashPasswordForStoringInConfigFile(source, "SHA1");
}
public string MD5(string source)
{
return FormsAuthentication.HashPasswordForStoringInConfigFile(source, "MD5");;
}
public string Encode(string data)
{
byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64); DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
int i = cryptoProvider.KeySize;
MemoryStream ms = new MemoryStream();
CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write); StreamWriter sw = new StreamWriter(cst);
sw.Write(data);
sw.Flush();
cst.FlushFinalBlock();
sw.Flush();
return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length); } public string Decode(string data)
{
byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64); byte[] byEnc;
try
{
byEnc = Convert.FromBase64String(data);
}
catch
{
return null;
} DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
MemoryStream ms = new MemoryStream(byEnc);
CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);
StreamReader sr = new StreamReader(cst);
return sr.ReadToEnd();
}
using System.Security.Cryptography;
...
public string Encode(string data)
{
byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
int i = cryptoProvider.KeySize;
MemoryStream ms = new MemoryStream();
CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);
StreamWriter sw = new StreamWriter(cst);
sw.Write(data);
sw.Flush();
cst.FlushFinalBlock();
sw.Flush();
return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
}
public string Decode(string data)
{
byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);
byte[] byEnc;
try
{
byEnc = Convert.FromBase64String(data);
}
catch
{
return null;
}
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
MemoryStream ms = new MemoryStream(byEnc);
CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);
StreamReader sr = new StreamReader(cst);
return sr.ReadToEnd();
}private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
public static string EncryptDES(string encryptString, string encryptKey)
{
try
{
byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));
byte[] rgbIV = Keys;
byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, 0, inputByteArray.Length);
cStream.FlushFinalBlock();
return Convert.ToBase64String(mStream.ToArray());
}
catch
{
return encryptString;
}
} public static string DecryptDES(string decryptString, string decryptKey)
{
try
{
byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey);
byte[] rgbIV = Keys;
byte[] inputByteArray = Convert.FromBase64String(decryptString);
DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, 0, inputByteArray.Length);
cStream.FlushFinalBlock();
return Encoding.UTF8.GetString(mStream.ToArray());
}
catch
{
return decryptString;
}
}
baidu+google 很多的 呵呵 加油啊
string url = Security.EncryptQueryString(txtName.Text.Trim());
string URl = "http://www.123.com/User/default.aspx?N="Security.EncryptQueryString(txtName.Text.Trim());
利用Security.EncryptQueryString这样不就可以了么
#region 地址栏传值加密
/// <summary>
/// 地址栏传值加密
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static string EncryptFilename(string value)
{
if (!UtilityClass.IsNullOrEmpty(value))
{
byte[] buffer = HttpContext.Current.Request.ContentEncoding.GetBytes(value);
value = Convert.ToBase64String(buffer).Replace('+', '@').Replace('/', '*');
int length = value.Length;
if (length > 3)
{
//确定需要分组的组数,按每3位分一组
int group = length / 3;
for (int i = 0, j = 3; i < group; i++, j = j + 3)
{
value = value.Insert(j + i, ",");
}
StringBuilder rebuildvalue = new StringBuilder(length);
string[] everygroup = value.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = everygroup.Length - 1; i >= 0; i--)
rebuildvalue.Append(everygroup[i]);
return rebuildvalue.ToString();
}
}
return value;
}
#endregion