C# DESMD5加密解密方法附项目程序.docx
- 文档编号:9462795
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:15
- 大小:34KB
C# DESMD5加密解密方法附项目程序.docx
《C# DESMD5加密解密方法附项目程序.docx》由会员分享,可在线阅读,更多相关《C# DESMD5加密解密方法附项目程序.docx(15页珍藏版)》请在冰点文库上搜索。
C#DESMD5加密解密方法附项目程序
C#项目中难免会遇到一些需要加密和解密的问题,方法虽然简单,但没有接触过的人还是会走些误区,在此以简单小程序进行说明。
本程序共有四个类:
Key.cs(设置密钥和偏移类)、EncrytString.cs(加密类)、DecryptString.cs(解密类)、SellServerEdit.cs(主程序显示类,为FORM)。
这里的KEY值和偏移量均已设好(在KEY.CS类中),如果你觉得这种加密方式不够安全,可以自己通过TEXTBOX值或者其他值传入,进行设定。
此处仅举方法。
重点关注SellServerEdit.cs主程序类的WriteToFile()、listBox1_SelectedIndexChanged()两个方法,分别对应加密和解决的操作,以及获取KEY的方法。
以下为程序界面:
以下为程序结构:
//KEY.CS
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
namespaceselectSellDemo
{
classKey
{
//定义程序加密密钥和偏移
byte[]key_b={225,11,183,166,175,189,133,111};
byte[]iv_b={181,12,1,234,97,154,240,3};
byte[]iv1_b={133,10,101,234,203,125,240,3};
byte[]iv2_b={2,200,50,12,60,154,130,8};
publicbyte[]key()
{
returnkey_b;
}
publicbyte[]iv()
{
returniv_b;
}
publicbyte[]iv1()
{
returniv1_b;
}
publicbyte[]iv2()
{
returniv2_b;
}
}
}
//EncrytString.cs
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Security.Cryptography;
usingSystem.Windows.Forms;
namespaceselectSellDemo
{
classEncrytString
{
publicstringEncryptString_Servers(stringsInputString,byte[]sKey,byte[]iv)
{
byte[]data=Encoding.UTF8.GetBytes(sInputString);
DESCryptoServiceProviderDES=newDESCryptoServiceProvider();
DES.Key=sKey;
DES.IV=iv;
ICryptoTransformdesencrypt=DES.CreateEncryptor();
byte[]result=desencrypt.TransformFinalBlock(data,0,data.Length);
returnBitConverter.ToString(result);
}
}
}
//DecryptString.cs
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Globalization;
usingSystem.Security.Cryptography;
usingSystem.Windows.Forms;
usingSystem.Reflection;
namespaceselectSellDemo
{
classDecryptString
{
publicstringDecryptString_Servers(stringsInputString,byte[]sKey,byte[]iv)
{
string[]sInput=sInputString.Split("-".ToCharArray());
byte[]data=newbyte[sInput.Length];
for(inti=0;i { data[i]=byte.Parse(sInput[i],NumberStyles.HexNumber); } DESCryptoServiceProviderDES=newDESCryptoServiceProvider(); DES.Key=sKey; DES.IV=iv; ICryptoTransformdesencrypt=DES.CreateDecryptor(); byte[]result=desencrypt.TransformFinalBlock(data,0,data.Length); returnEncoding.UTF8.GetString(result); } } } //SellServerEdit.cs主程序入口 usingSystem; usingSystem.Collections.Generic; usingSystem.ComponentModel; usingSystem.Data; usingSystem.Drawing; usingSystem.Linq; usingSystem.Text; usingSystem.Windows.Forms; usingSystem.IO; namespaceselectSellDemo { publicpartialclassSellServerEdit: Form { publicSellServerEdit() { InitializeComponent(); } Keykeyone=newKey(); //定义加密解密类实例 GenerateKeygk=newGenerateKey(); EncrytStringes=newEncrytString(); DecryptStringds=newDecryptString(); //定义密钥和偏移量 //获取key和IV值 byte[]key; byte[]iv; byte[]iv1; byte[]iv2; //定义SERVERPATH stringserverpath=@".\Servers\Server_sell\server.txt"; //读取文件到LISTBOX...取列表SERVER privatevoidReadToListbox() { listBox1.Items.Clear(); if(File.Exists(serverpath)) { FileStreamfs=newFileStream(serverpath,FileMode.Open,FileAccess.Read); StreamReadersr=newStreamReader(fs,System.Text.Encoding.GetEncoding("GB2312")); stringrd=""; while((rd=sr.ReadLine())! =null) { //rd=sr.ReadLine(); listBox1.Items.Add(rd.ToString()); } sr.Close(); } } /// ///写入SERVER并新建相关的数据信息 /// privatevoidWriteToFile() { key=keyone.key(); iv=keyone.iv(); iv1=keyone.iv1(); iv2=keyone.iv2(); stringpath=@".\Servers\Server_sell\"+textBox1.Text+"-"+textBox2.Text+".txt"; stringserverip=""; stringusername=""; stringpassword=""; stringdatabase=""; stringport=""; serverip=es.EncryptString_Servers(textBox3.Text,key,iv); username=es.EncryptString_Servers(textBox4.Text,key,iv1); password=es.EncryptString_Servers(textBox5.Text,key,iv2); database=textBox6.Text; port=textBox7.Text; stringfiletext=serverip+"\n"+username+"\n"+password+"\n"+database+"\n"+port; SaveFile(path,filetext); boolserverstatus=true; stringttstr=textBox1.Text+"-"+textBox2.Text; for(inti=0;i { if(ttstr==listBox1.Items[i].ToString()) { serverstatus=false; } } if(serverstatus) { SaveFile(serverpath,textBox1.Text+"-"+textBox2.Text+"\n"); } ReadToListbox(); //Servers.ReadCommerce(); //UserControl1.loadServers(); //SboBox1.SelectedIndex=0; } /// ///LISTBOX点击反应事件 /// /// /// privatevoidlistBox1_SelectedIndexChanged(objectsender,EventArgse) { key=keyone.key(); iv=keyone.iv(); iv1=keyone.iv1(); iv2=keyone.iv2(); stringservercode=""; stringservername=""; stringserverip=""; stringusername=""; stringpassword=""; stringserverdbs=""; stringserverport=""; stringrd=""; //检测路径文件是否存在,不存在,则不显示 stringselectfilepath=@".\Servers\Server_sell\"+listBox1.Items[listBox1.SelectedIndex].ToString()+".txt"; if(listBox1.Items.Count! =0) { if(File.Exists(selectfilepath)) { FileStreamfs=newFileStream(selectfilepath,FileMode.Open,FileAccess.Read); StreamReadersr=newStreamReader(fs,System.Text.Encoding.UTF8); servercode=listBox1.Items[listBox1.SelectedIndex].ToString().Substring(0,8); servername=listBox1.Items[listBox1.SelectedIndex].ToString().Substring(listBox1.Items[listBox1.SelectedIndex].ToString().Length-5,5); if((rd=sr.ReadLine())! =null) { //stringkey=gk.GenerateKey_Servers(); serverip=ds.DecryptString_Servers(rd,key,iv); } if((rd=sr.ReadLine())! =null) { //stringkey=gk.GenerateKey_Servers(); username=ds.DecryptString_Servers(rd,key,iv1); } if((rd=sr.ReadLine())! =null) { //stringkey=gk.GenerateKey_Servers(); password=ds.DecryptString_Servers(rd,key,iv2); } if((rd=sr.ReadLine())! =null) { //stringkey=gk.GenerateKey_Servers(); serverdbs=rd.ToString(); } if((rd=sr.ReadLine())! =null) { //stringkey=gk.GenerateKey_Servers(); serverport=rd.ToString(); } textBox1.Text=servercode; textBox2.Text=servername; textBox3.Text=serverip; textBox4.Text=username; textBox5.Text=password; textBox6.Text=serverdbs; textBox7.Text=serverport; sr.Close(); } } } /// ///保存文件 /// /// /// privatevoidSaveFile(stringfilePath,stringcontent) { try { //stringpath=@".\Servers\"+textBox1.Text+".txt"; if(filePath! =serverpath) { if(File.Exists(filePath)) { File.Delete(filePath); File.AppendAllText(filePath,content,System.Text.Encoding.UTF8); } else { //此处如果使用Encoding.Default。 则在读取的时候也需使用DEFAULT,在此处理为System.Text.Encoding.UTF8 File.AppendAllText(filePath,content,System.Text.Encoding.UTF8); } } else File.AppendAllText(filePath,content,System.Text.Encoding.UTF8); } catch(Exceptionex) { MessageBox.Show(ex.Message); } } privatevoidSellServerEdit_Load(objectsender,EventArgse) { ReadToListbox(); } /// ///添加 /// /// /// privatevoidbutton3_Click(objectsender,EventArgse) { WriteToFile(); } /// ///删除 /// /// /// privatevoidbutton2_Click(objectsender,EventArgse) { stringselectfilepath=""; //如果没有选择数据,则不做任何操作 if(listBox1.SelectedIndex! =-1) { //设置需要删除的文件路径 selectfilepath=@".\Servers\Server_sell\"+listBox1.Items[listBox1.SelectedIndex].ToString()+".txt"; //如果选择项大于1,则执行 if(listBox1.Items.Count>1) { //如果选择项不是第一个,则执行 if(listBox1.SelectedIndex! =0) { //如果删除的路径存在,则删除 if(File.Exists(selectfilepath)) { File.Delete(selectfilepath); } stringdeletefilepath=serverpath; //删除LISTBOX中的记录 //此处的SELECTINDEX必需要进行减1,不然会关连到SELECTINDEXCHANGE函数,使SELECTINDEX提示无效 listBox1.SelectedIndex=listBox1.SelectedIndex-1; listBox1.Items.RemoveAt(listBox1.SelectedIndex+1); stringstr=""; //将LISTBOX里的数据保存在STR内 for(inti=0;i { str+=listBox1.Items[i]+"\n"; } //如果存在SERVER文件,则删除 if(File.Exists(deletefilepath)) { File.Delete(deletefilepath); } //重新保存SERVER文件 SaveFile(deletefilepath,str); //重新读取SERVER文件到LISTBOX,更新LISTBOX内容 //ReadToListbox(); //更新SERVERS界面下拉框内容 //Servers.ReadCommerce(); //UserControl1.loadServers(); //SboBox1.SelectedIndex=0; textBox1.Text=""; textBox2.Text=""; textBox3.Text=""; textBox4.Text=""; textBox5.Text=""; textBox6.Text=""; textBox7.Text=""; } } } } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# DESMD5加密解密方法附项目程序 DESMD5 加密 解密 方法 项目 程序