Go homepage(回首页) Upload pictures (上传图片) Write articles (发文字帖)
The author:(作者)归海一刀published in(发表于) 2014/1/30 1:20:01 asp.net加密页面传递参数做法与示例_[Asp.Net教程]
asp.net代码与示例using System; using System.Collections; using System.ComponentModel; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.IO; using System.Text; using System.Text.RegularExpressions; using System.Data.SqlClient; using System.Configuration; //导入自定义的类库 using _3Layer.DataLayer.DataCommon; using _3Layer.DataLayer.DataCommon.DataAccess; using Library.ClassLibrary.Crypt.DES; namespace CHONGCHONG.XML public class RenderingXML : System.Web.UI.Page { /// /// 从数据库预生成XML数据源 /// private void PreRenderXML() { string strSQL = "select语句略去........................; myDataLayer.Open(); RenderingXml="encoding=’gb2312’?>\r\n"; RenderingXml+="\r\n"; try { System.Data.SqlClient.SqlDataReader myDR = (SqlDataReader)myDataLayer.ExecuteReader( strSQL ); while(myDR.Read()) { RenderingXml+="\r\n"; RenderingXml+=""+myDR["BoardName"]+"\r\n"; RenderingXml+=""+myDR["Title"]+"\r\n"; RenderingXml+=""+EncodeHTML ( EncodeParameter( myDR["Link"].ToString() ) )+"\r\n"; RenderingXml+=""+myDR["children"]+"\r\n"; RenderingXml+=""+myDR["Target"]+"\r\n"; RenderingXml+="\r\n"; } } catch(System.Data.SqlClient.SqlException ee) { return ; } finally { myDataLayer.Close() ; } RenderingXml+=""; byte[] bytResult = Encoding.Default.GetBytes( RenderingXml ) ; Response.ContentType = "text/xml" ; Response.BinaryWrite( bytResult ) ; }/// /// Description:加密路径参数 /// /// /// private string EncodeParameter( string sourParameter ) { string startString = String.Empty ; string endString = String.Empty ; StringBuilder destParameter = new StringBuilder() ; if( sourParameter == null || sourParameter.Equals("") ) { destParameter.Append( String.Empty ).ToString() ; } else { //开始分析路径里的?字符 if( sourParameter.IndexOf("?")<0 ) { destParameter.Append( sourParameter ).ToString() ; } else { //以?号分割路径 string[] paramPath = sourParameter.Split( new char[]{’?’} ) ; startString = paramPath[0].ToString() ; endString = paramPath[1].ToString() ; //开始分析路径里的&字符 if(sourParameter.IndexOf("&")<0) { //只有一个参数,用=号分割,直接把NameValue进行Des加密 string[] paramNameValue = endString.Split( new char[]{’=’} ) ; string paramName = myDES.Encrypt ( paramNameValue[0].ToString() ,myDESKey ) ; string paramValue = myDES.Encrypt ( paramNameValue[1].ToString() ,myDESKey ) ; destParameter.Append( startString ).Append("?"). Append( paramName ).Append("=").Append( paramValue ) ; } else { //有多个参数,以&号分割?号后面的路径 string[] paramJoin = endString.Split( new char[]{’&’} ) ; destParameter.Append( startString ).Append("?"). Append( EncoderNameValue( paramJoin ) ) .ToString() ; } } } return destParameter.ToString() ; }/// /// Description:加密路径里的NameValue参数 /// /// /// private string EncoderNameValue( string[] sourNameValue ) { string[] paramNameValue ; string paramName ; string paramValue ; StringBuilder sb = new StringBuilder() ; for( int i = 0 ; i <= sourNameValue.Length-1 ; i++ ) { //以=号分割每个NameValue参数 paramNameValue = sourNameValue[i].Split( new char[]{’=’} ) ; //开始对NameValue加密 paramName = myDES.Encrypt( paramNameValue[0].ToString() ,myDESKey ) ; paramValue = myDES.Encrypt( paramNameValue[1].ToString() ,myDESKey ) ; //存储加密后的路径字符串 sb.Append( paramName ).Append("=").Append( paramValue ) ; //是否最后一个NameValue参数,若不是在路基里添加&参数连接符 if( i{ sb.Append("&") ; } } return sb.ToString() ; } }
赞