文本的des加密
为了对称加密的安全,我将密码进行封装,先新建一个用于保存密码的类库cl:
using system;
using system.text ;
namespace cl
{
/// <summary>
/// class1 的摘要说明。
/// </summary>
public class class1
{
public class1()
{
}
public string getiv()
{
string iv="********";//八位
return iv;
}
public string getkey()
{
string key="01160129";//八位
return key;
}
}
}
然后新建asp.net项目(c#)
在 .aspx中
using cl;
namespace test//给一个文本产生一个散列值
{
/// <summary>
/// computehash 的摘要说明。
/// </summary>
public class computehash : system.web.ui.page
{
protected system.web.ui.webcontrols.label label1;
protected system.web.ui.webcontrols.textbox textbox1;
protected system.web.ui.webcontrols.button button1;
protected system.web.ui.webcontrols.textbox textbox3;
protected system.web.ui.webcontrols.button button2;
protected system.web.ui.webcontrols.textbox textbox4;
protected system.web.ui.webcontrols.button button3;
protected system.web.ui.webcontrols.textbox textbox5;
protected system.web.ui.webcontrols.button button4;
protected system.web.ui.webcontrols.button button5;
protected system.web.ui.webcontrols.label label2;
protected system.web.ui.webcontrols.textbox textbox7;
protected system.web.ui.webcontrols.label label3;
protected system.web.ui.webcontrols.textbox textbox8;
protected system.web.ui.webcontrols.textbox textbox9;
protected system.web.ui.webcontrols.label label4;
protected system.web.ui.webcontrols.button button6;
protected system.web.ui.webcontrols.label label5;
protected system.web.ui.webcontrols.textbox textbox2;
private void page_load(object sender, system.eventargs e)
{
// 在此处放置用户代码以初始化页面
}
#region web 窗体设计器生成的代码
override protected void oninit(eventargs e)
{
//
// codegen: 该调用是 asp.net web 窗体设计器所必需的。
//
initializecomponent();
base.oninit(e);
}
/// <summary>
/// 设计器支持所需的方法 – 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void initializecomponent()
{
this.button2.click += new system.eventhandler(this.button2_click);
this.button1.click += new system.eventhandler(this.button1_click);
this.button3.click += new system.eventhandler(this.button3_click);
this.button4.click += new system.eventhandler(this.button4_click);
this.button5.click += new system.eventhandler(this.button5_click);
this.button6.click += new system.eventhandler(this.button6_click);
this.load += new system.eventhandler(this.page_load);
}
#endregion
private void button1_click(object sender, system.eventargs e)
{
byte[] bt=utf8encoding.utf8.getbytes(textbox1.text );//utf8需要对text的引用
md5cryptoserviceprovider objmd5;
objmd5=new md5cryptoserviceprovider ();
byte[] output=objmd5.computehash (bt);
textbox2.text =bitconverter.tostring (output);
}
private void button2_click(object sender, system.eventargs e)
{
byte[] bt=utf8encoding.utf8.getbytes(textbox1.text );//utf8需要对text的引用
md5cryptoserviceprovider objmd5;
objmd5=new md5cryptoserviceprovider ();
byte[] output=objmd5.computehash (bt);
textbox4.text =bitconverter.tostring (output);
}
private void button3_click(object sender, system.eventargs e)
{
class1 cl=new class1 ();
string iv1=cl.getiv ();
string key1=cl.getkey ();
byte[] iv=utf8encoding.utf8 .getbytes (iv1);
byte[] key=utf8encoding.utf8 .getbytes (key1);
byte[] source=utf8encoding.utf8 .getbytes (textbox1.text );
//定义加密对象
descryptoserviceprovider objdes;
objdes=new descryptoserviceprovider ();
//设置加密对象值
objdes.iv =iv;
objdes.key =key;
//创建加密器对象
icryptotransform objencryptor;
objencryptor=objdes.createencryptor (objdes.key ,objdes.iv );
//准备将加密的文本写入secret.txt中
filestream objfs;
objfs=new filestream (mappath("secret.txt"),filemode.create ,fileaccess.write );
//写入
cryptostream cryptostream;
cryptostream=new cryptostream (objfs,objencryptor,cryptostreammode.write );
cryptostream.write (source,0,source.length );
cryptostream.close ();
}
private void button4_click(object sender, system.eventargs e)
{
class1 cl=new class1 ();
string iv1=cl.getiv ();
string key1=cl.getkey ();
byte[] iv=utf8encoding.utf8 .getbytes (iv1);
byte[] key=utf8encoding.utf8 .getbytes (key1);
byte[] source=utf8encoding.utf8 .getbytes (textbox1.text );
//定义加密对象
descryptoserviceprovider objdes;
objdes=new descryptoserviceprovider ();
//设置加密对象值
objdes.iv =iv;
objdes.key =key;
//创建加密器对象
icryptotransform objencryptor;
objencryptor=objdes.createencryptor (objdes.key ,objdes.iv );
//写到内存
memorystream ms=new memorystream ();
cryptostream cs=new cryptostream (ms,objencryptor,cryptostreammode.write );
cs.write (source,0,source.length );
cs.flushfinalblock ();
ms.close ();
textbox5.text =bitconverter.tostring (ms.toarray ());
}
private void button5_click(object sender, system.eventargs e)
{
dsacryptoserviceprovider objdsa;
objdsa=new dsacryptoserviceprovider ();
byte[] source=utf8encoding.utf8 .getbytes (textbox1.text );
//公开秘钥
textbox8.text =objdsa.toxmlstring (false);
//私有秘钥
textbox9.text =objdsa.toxmlstring (true);
//数字签名
textbox7.text =bitconverter.tostring (objdsa.signdata (source));
}
}
}
