仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 634|回复: 8
打印 上一主题 下一主题

[学习教程] ASP.NET网页编程之一个可逆加密的例子

[复制链接]
分手快乐 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:31:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我觉得很重要,一般所说的不重要应该指的是:你学好一种以后再学另一种就很容易了。(因为这样大家可能有一个错觉就是语言不是很重要,只要随便学一种就可以了,其实不是这样的。加密上面的代码完成了一个可逆加密的办法。能够用于对Cookie,QueryString等加密处置。

检察例子

VB.net代码

<%@PageLanguage="vb"AutoEventWireup="false"Codebehind="EncString.<ahref="http://dev.21tx.com/web/asp/"target="_blank">ASP</a>x.vb"
Inherits="aspx<ahref="http://dev.21tx.com/web/"target="_blank">Web</a>.EncString"%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">
<HTML>
<HEAD>
<title>一个可逆加密的例子</title>
<metaname="GENERATOR"content="MicrosoftVisualStudio.NET7.0">
<metaname="CODE_LANGUAGE"content="VisualBasic7.0">
<metaname="vs_defaultClientScript"content="<ahref="http://dev.21tx.com/web/javascript/"target="_blank">JavaScript</a>">
<metaname="vs_targetSchema"content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<bodyMS_POSITIONING="GridLayout">
<asp:Labelid="Label1"runat="server"></asp:Label>
<palign="center">
<formid="Form1"method="post"runat="server">
<FONTface="宋体">
<asp:TextBoxid="TextBox1"runat="server"Width="96%"></asp:TextBox>
<asp:RadioButtonListid="RadioButtonList1"runat="server"Font-Bold="True"
RepeatDirection="Horizontal"AutoPostBack="True"OnSelectedIndexChanged="ShowRes">
</asp:RadioButtonList>
<asp:TextBoxid="TextBox2"runat="server"Width="96%"></asp:TextBox>
</FONT>
</form>
</p>
</body>
</HTML>

后端代码EncString.aspx.vb:
ImportsSystem
ImportsSystem.IO
ImportsSystem.Xml
ImportsSystem.Text
ImportsSystem.Security.Cryptography
PublicClassEncString
InheritsSystem.Web.UI.Page
ProtectedWithEventsTextBox1AsSystem.Web.UI.WebControls.TextBox
ProtectedWithEventsTextBox2AsSystem.Web.UI.WebControls.TextBox
ProtectedWithEventsForm1AsSystem.Web.UI.HtmlControls.HtmlForm
ProtectedWithEventsLabel1AsSystem.Web.UI.WebControls.Label
ProtectedWithEventsRadioButtonList1AsSystem.Web.UI.WebControls.RadioButtonList

#Region"WebFormDesignerGeneratedCode"

ThiscallisrequiredbytheWebFormDesigner.
<System.Diagnostics.DebuggerStepThrough()>PrivateSubInitializeComponent()

EndSub

PrivateSubPage_Init(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)Handles

MyBase.Init
CODEGEN:ThismethodcallisrequiredbytheWebFormDesigner
Donotmodifyitusingthecodeeditor.
InitializeComponent()
EndSub

#EndRegion

PrivateSubPage_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)Handles

MyBase.Load
Putusercodetoinitializethepagehere
Label1.Text="<h3align=center>一个可逆加密的例子</h3>"
IfNotIsPostBackThen
DimMyListAsNewArrayList()
MyList.Add("加密")
MyList.Add("解密")
RadioButtonList1.DataSource=MyList
RadioButtonList1.DataBind()
EndIf
EndSub

加密
PublicSharedFunctionEncryptText(ByValstrTextAsString)AsString
ReturnEncrypt(strText,"&%#@?,:*")
EndFunction

解密
PublicSharedFunctionDecryptText(ByValstrTextAsString)AsString
ReturnDecrypt(strText,"&%#@?,:*")
EndFunction

加密函数
PrivateSharedFunctionEncrypt(ByValstrTextAsString,ByValstrEncrKeyAsString)AsString
DimbyKey()AsByte={}
DimIV()AsByte={&H12,&H34,&H56,&H78,&H90,&HAB,&HCD,&HEF}
Try
byKey=System.Text.Encoding.UTF8.GetBytes(Left(strEncrKey,8))
DimdesAsNewDESCryptoServiceProvider()
DiminputByteArray()AsByte=Encoding.UTF8.GetBytes(strText)
DimmsAsNewMemoryStream()
DimcsAsNewCryptoStream(ms,des.CreateEncryptor(byKey,IV),CryptoStreamMode.Write)
cs.Write(inputByteArray,0,inputByteArray.Length)
cs.FlushFinalBlock()
ReturnConvert.ToBase64String(ms.ToArray())
CatchexAsException
Returnex.Message
EndTry
EndFunction

解密函数
PrivateSharedFunctionDecrypt(ByValstrTextAsString,ByValsDecrKeyAsString)AsString
DimbyKey()AsByte={}
DimIV()AsByte={&H12,&H34,&H56,&H78,&H90,&HAB,&HCD,&HEF}
DiminputByteArray(strText.Length)AsByte
Try
byKey=System.Text.Encoding.UTF8.GetBytes(Left(sDecrKey,8))
DimdesAsNewDESCryptoServiceProvider()
inputByteArray=Convert.FromBase64String(strText)
DimmsAsNewMemoryStream()
DimcsAsNewCryptoStream(ms,des.CreateDecryptor(byKey,IV),CryptoStreamMode.Write)
cs.Write(inputByteArray,0,inputByteArray.Length)
cs.FlushFinalBlock()
DimencodingAsSystem.Text.Encoding=System.Text.Encoding.UTF8
Returnencoding.GetString(ms.ToArray())
CatchexAsException
Returnex.Message
EndTry
EndFunction

PublicSubShowRes(ByValsenderAsObject,ByValeAsSystem.EventArgs)_
HandlesRadioButtonList1.SelectedIndexChanged
IfRadioButtonList1.SelectedIndex=0Then
TextBox2.Text=EncryptText(TextBox1.Text)
Else
TextBox2.Text=DecryptText(TextBox1.Text)
EndIf
EndSub
EndClass
C#代码

EncryptString.aspx

<%@Pagelanguage="c#"EnableViewState="true"Codebehind="EncryptString.aspx.cs"AutoEventWireup="false"Inherits="eMeng.Exam.EncryptString"%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">
<HTML>
<HEAD>
<title>一个可逆加密的例子</title>
<metaname="GENERATOR"content="MicrosoftVisualStudio.NET7.0">
<metaname="CODE_LANGUAGE"content="VisualBasic7.0">
<metaname="vs_defaultClientScript"content="JavaScript">
<metaname="vs_targetSchema"content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body>
<formid="Form1"method="post"runat="server">
<palign="center">一个可逆加密的例子
<asp:TextBoxid="TextBox1"runat="server"Width="96%">http://dotnet.aspx.cc/</asp:TextBox>
<asp:RadioButtonListid="RadioButtonList1"runat="server"Font-Bold="True"RepeatDirection="Horizontal"
AutoPostBack="True"></asp:RadioButtonList>
<asp:TextBoxid="TextBox2"runat="server"Width="96%"></asp:TextBox>
<asp:TextBoxid="Textbox3"runat="server"Width="96%"></asp:TextBox>
</p>
</form>
</body>
</HTML>

EncryptString.aspx.cs

usingSystem;
usingSystem.Collections;
usingSystem.ComponentModel;
usingSystem.Drawing;
usingSystem.Web;
usingSystem.Web.SessionState;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.HtmlControls;
usingSystem.IO;
usingSystem.Text;
usingSystem.Security.Cryptography;


namespaceeMeng.Exam
{
///<summary>
///EncryptString的择要申明。
///</summary>
publicclassEncryptString:System.Web.UI.Page
{
protectedSystem.Web.UI.WebControls.TextBoxTextBox1;
protectedSystem.Web.UI.WebControls.RadioButtonListRadioButtonList1;
protectedSystem.Web.UI.WebControls.TextBoxTextBox2;
protectedSystem.Web.UI.WebControls.TextBoxTextbox3;
protectedSystem.Web.UI.HtmlControls.HtmlFormForm1;

privatevoidPage_Load(objectsender,System.EventArgse)
{
//在此处安排用户代码以初始化页面
if(!this.IsPostBack)
{
ArrayListMyList=newArrayList();
MyList.Add("加密");
MyList.Add("解密");
RadioButtonList1.DataSource=MyList;
RadioButtonList1.DataBind();
}
}

#regionWeb窗体计划器天生的代码
overrideprotectedvoidOnInit(EventArgse)
{
//
//CODEGEN:该挪用是ASP.NETWeb窗体计划器所必须的。
//
InitializeComponent();
base.OnInit(e);
}
///<summary>
///计划器撑持所需的办法-不要利用代码编纂器修正
///此办法的内容。
///</summary>
privatevoidInitializeComponent()
{
this.RadioButtonList1.SelectedIndexChanged+=newSystem.EventHandler(this.RadioButtonList1_SelectedIndexChanged);
this.Load+=newSystem.EventHandler(this.Page_Load);

}
#endregion

privatevoidRadioButtonList1_SelectedIndexChanged(objectsender,System.EventArgse)
{
if(RadioButtonList1.SelectedIndex==0)
TextBox2.Text=EncryptText(TextBox1.Text);
else
Textbox3.Text=DecryptText(TextBox2.Text);
}
//加密
publicstringEncryptText(StringstrText)
{
returnEncrypt(strText,"&%#@?,:*");
}

//解密
publicStringDecryptText(StringstrText)
{
returnDecrypt(strText,"&%#@?,:*");
}
//加密函数
privateStringEncrypt(StringstrText,StringstrEncrKey)
{
Byte[]byKey={};
Byte[]IV={0x12,0x34,0x56,0x78,0x90,0xAB,0xCD,0xEF};
try
{
byKey=System.Text.Encoding.UTF8.GetBytes(strEncrKey.Substring(0,8));
DESCryptoServiceProviderdes=newDESCryptoServiceProvider();
Byte[]inputByteArray=Encoding.UTF8.GetBytes(strText);
MemoryStreamms=newMemoryStream();
CryptoStreamcs=newCryptoStream(ms,des.CreateEncryptor(byKey,IV),CryptoStreamMode.Write);
cs.Write(inputByteArray,0,inputByteArray.Length);
cs.FlushFinalBlock();
returnConvert.ToBase64String(ms.ToArray());
}
catch(Exceptionex)
{
returnex.Message;
}
}

//解密函数
privateStringDecrypt(StringstrText,StringsDecrKey)
{
Byte[]byKey={};
Byte[]IV={0x12,0x34,0x56,0x78,0x90,0xAB,0xCD,0xEF};
Byte[]inputByteArray=newbyte[strText.Length];
try
{
byKey=System.Text.Encoding.UTF8.GetBytes(sDecrKey.Substring(0,8));
DESCryptoServiceProviderdes=newDESCryptoServiceProvider();
inputByteArray=Convert.FromBase64String(strText);
MemoryStreamms=newMemoryStream();
CryptoStreamcs=newCryptoStream(ms,des.CreateDecryptor(byKey,IV),CryptoStreamMode.Write);
cs.Write(inputByteArray,0,inputByteArray.Length);
cs.FlushFinalBlock();
System.Text.Encodingencoding=System.Text.Encoding.UTF8;
returnencoding.GetString(ms.ToArray());
}
catch(Exceptionex)
{
returnex.Message;
}
}
}
}
我以前很喜欢Serv-U,自从它用Java重写之后我就再也没用过,实在是太慢了,我宁可用IIS搭建FTP,虽然IIS搭建FTP在权限管理上很不灵活。
山那边是海 该用户已被删除
沙发
发表于 2015-1-18 12:14:34 | 只看该作者
Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。
蒙在股里 该用户已被删除
板凳
发表于 2015-1-21 22:39:43 | 只看该作者
但是目前在CGI中使用的最为广泛的是Perl语言。所以,狭义上所指的CGI程序一般都是指Perl程序,一般CGI程序的后缀都是.pl或者.cgi。
爱飞 该用户已被删除
地板
发表于 2015-1-30 22:47:47 | 只看该作者
当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。
精灵巫婆 该用户已被删除
5#
发表于 2015-2-6 16:29:55 | 只看该作者
HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了.
若相依 该用户已被删除
6#
发表于 2015-2-17 07:36:18 | 只看该作者
在一个项目中谁敢保证每天几千万甚至几亿条的数据不丢失?谁敢保证应用的高可靠性?有可以借签的项目吗?
小魔女 该用户已被删除
7#
发表于 2015-3-5 17:23:02 | 只看该作者
CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。
admin 该用户已被删除
8#
发表于 2015-3-12 10:52:35 | 只看该作者
ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。
老尸 该用户已被删除
9#
发表于 2015-3-19 20:50:54 | 只看该作者
ASP.net的速度是ASP不能比拟的。ASP.net是编译语言,所以,当第一次加载的时候,它会把所有的程序进行编译(其中包括worker进程,还有对语法进行编译,形成一个程序集),当程序编译后,执行速度几乎为0。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 01:17

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表