如我想把
.aspx?city=1&keyword=AC
这样的传值的时候显示例如为
.aspx?sdfskdfjsldjfoielsdf
也就是后面全为乱码的形式
然后再后台用什么方法来读取如
String City=?????("City").ToString();
String Keyword=?????("Keyword").ToString();就像我现在用DES加密也只能做到.aspx?city=sdfsdf&keyword=sdfsdfsd
像这样的
但这样还是一眼就看来传了city keyword
.aspx?city=1&keyword=AC
这样的传值的时候显示例如为
.aspx?sdfskdfjsldjfoielsdf
也就是后面全为乱码的形式
然后再后台用什么方法来读取如
String City=?????("City").ToString();
String Keyword=?????("Keyword").ToString();就像我现在用DES加密也只能做到.aspx?city=sdfsdf&keyword=sdfsdfsd
像这样的
但这样还是一眼就看来传了city keyword
解决方案 »
- js 输出
- net cf下,DataGrid如何设置每一行的高度?
- 请求解决 HttpException (0x80004005): 未能加载视图状态。
- 请教:: 怎么对一个多级的XML读取成多个关联的GridView ,,并对其添加删除修改
- 一个对我来说比较难写的CheckBox问题,有人能给出答案??
- VISTA系统下配置IIS问题,请高手帮个忙!
- VBC 编译的DLL文件为什么不能调用其方法?
- 一个存储过程问题,存储过程高手帮忙
- 请问各位高手都在用什么编辑器写ASP.NET?我用ULTRAEDIT,可是觉得不太好。
- 使用page.application的问题,用applicaton保存状态信息是否可行?
- UltraWebGrid中如何加复选框,急!
- 如何在地图上根据坐标点画区域?怎么做好?有没有例子能看一看?
using System.Web;
using System.Web.UI;
using System.IO;
using System.Security;
using System.Security.Cryptography;
using System.Configuration;
public class DataProtection
{
public static RSACryptoServiceProvider rsa;
public static void AssignParameter()
{
const int PROVIDER_RSA_FULL = 1;
const string CONTAINER_NAME = "NMTechnology";
CspParameters cspParams;
cspParams = new CspParameters(PROVIDER_RSA_FULL);
cspParams.KeyContainerName = CONTAINER_NAME;
cspParams.Flags = CspProviderFlags.UseMachineKeyStore;
cspParams.ProviderName = "Microsoft Strong Cryptographic Provider";
try
{
rsa = new RSACryptoServiceProvider(cspParams);
}
catch
{
string x = "X";
}
}
public static string Encrypt(string data2Encrypt)
{
AssignParameter();
StreamReader reader = new
StreamReader(ConfigurationManager.AppSettings["PublicKey"].ToString());
string publicOnlyKeyXML = reader.ReadToEnd();
rsa.FromXmlString(publicOnlyKeyXML);
reader.Close();
//read plaintext, encrypt it to ciphertext
byte[] plainbytes = System.Text.Encoding.UTF8.GetBytes(data2Encrypt);
byte[] cipherbytes = rsa.Encrypt(plainbytes, false);
return Convert.ToBase64String(cipherbytes);
}
public static void AssignNewKey()
{
AssignParameter();
//provide public and private RSA params
StreamWriter writer = new
StreamWriter(ConfigurationManager.AppSettings["PrivateKey"].ToString());
string publicPrivateKeyXML = rsa.ToXmlString(true);
writer.Write(publicPrivateKeyXML);
writer.Close();
//provide public only RSA params
writer = new
StreamWriter(ConfigurationManager.AppSettings["PublicKey"].ToString());
string publicOnlyKeyXML = rsa.ToXmlString(false);
writer.Write(publicOnlyKeyXML);
writer.Close();
}
public static string Decrypt(string data2Decrypt)
{
AssignParameter();
byte[] getpassword = Convert.FromBase64String(data2Decrypt);
StreamReader reader = new
StreamReader(ConfigurationManager.AppSettings["PrivateKey"].ToString());
string publicPrivateKeyXML = reader.ReadToEnd();
rsa.FromXmlString(publicPrivateKeyXML);
reader.Close();
//read ciphertext, decrypt it to plaintext
byte[] plain = rsa.Decrypt(getpassword, false);
return System.Text.Encoding.UTF8.GetString(plain);
}
}
http://www.madskristensen.dk/blog/CommentView,guid,a6a478df-245a-4cd8-a3cc-80bb8c9c8004.aspxhttp://www.madskristensen.dk/blog/content/binary/QueryStringModule.zip
如果数据是敏感的,那么请放到session中而不是查询字符串中。
object[] theParam=new object[]{......};在创建并输出url的页面可以写: string pid=theParam.GetHashCode().ToString();
Cache.Insert(pid,theParam);
string url="......aspx?pid="+pid;在接收页面可以写: object[] params=Cache[Request.QueryString["pid"]];只要一个参数,传递多少数据都可以,并且在url上的一个很短的编号,又快又“保密”。
如我用方法在传的时候
url=".aspx"+MyEncode("City=1&keyword=abc"); //MyEncode进行Des加密
取的时候
String Param=MyUnCode(??);
...这里取City 和 keyword的值
这样的话应该别人看不出是什么东西问的是如何取出.aspx?city=1&keyword=abc中的city=1&keyword=abc还有这样写可不可以
==>Request.QueryString.ToString()
---------------------
同意