信息安全概论课程设计之web入侵技术.docx
- 文档编号:5441623
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:15
- 大小:203.40KB
信息安全概论课程设计之web入侵技术.docx
《信息安全概论课程设计之web入侵技术.docx》由会员分享,可在线阅读,更多相关《信息安全概论课程设计之web入侵技术.docx(15页珍藏版)》请在冰豆网上搜索。
信息安全概论课程设计之web入侵技术
郑州轻工业学院本科
数据结构课程设计总结报告
设计题目:
加密解密算法演示系统设计与实现
学生姓名:
马兵兵
系别:
计算机科学与工程学院
专业:
网络工程08-1
学号:
200807030125
指导教师:
蔡增玉张然
年月日
郑州轻工业学院
课程设计任务书
题目加密解密算法演示系统设计与实现
专业、班级网络工程08-1学号200807030125姓名马兵兵
主要内容、基本要求、主要参考资料等:
主要内容:
根据所学的知识,编写算法,分别实现代替密码加密和解密、换位密码加密和解密、DES加密和解密演示、MD5机密和验证演示和RSA加密和解密演示。
基本要求:
使用高级程序设计语言来编写程序,并写出功能设计和课程设计任务书,最后讲解设计方案,演示实现结果。
主要参考资料:
《信息安全概论》作者:
李剑张然出版社:
机械工业出版社。
《精通C#数据库开发》作者:
王华杰李律松孙一波出版社:
清华大学出版社。
完成期限:
指导教师签名:
课程负责人签名:
2011年06月日
目录
一、课程设计题目4
二、运行环境4
三、算法设计的思想4
四、算法的流程图6
五、核心源代码7
1、代替算法7
2、换位算法8
3、DES算法9
4、MD5算法10
5、RSA算法10
六、运行结果分析12
1、程序主界面12
2、代替算法运行界面12
3、换位算法运行界面13
4、DES算法运行界面14
5、MD5算法运行界面14
6、DES算法运行界面15
七、收获及体会15
一、课程设计题目
加密解密算法演示系统设计与实现
二、运行环境
操作系统为WindowsXP
开发环境为MicrosoftVisualStudio2008
编程语言为C#语言
三、算法设计的思想
本程序一共包含五种加密算法,分别是代替密码、换位密码、DES、MD5和RSA,其中除MD5加密过程不可逆,其余的都可通过一定算法实现其解密过程。
1、在代替密码中按照字符数字的ASCII进行排序,然后对明文的ASCII依次加上N个值,即得密文;
2、在换位密码中把明文密码存放在一个n*m阶矩阵中,明文的读取方式是先行后列,加密过程即更改读取方式,如先列后行;
3、在DES中,明文按照64位进行分组,另外要设置密钥一值,用于对数据加密或解密;
4、MD5算法则以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值,即实现了加密,两外该加密算法不可逆。
5、RSA的原理思想是任意选取两个不同的大质数p和q,计算乘积r=p*q;然后任意选取一个大整数e,e与(p-1)*(q-1)互质,整数e用做加密密钥。
确定解密密钥d:
d*e=1modulo(p-1)*(q-1)根据e、p和q可以容易地计算出d。
公开整数r和e,但是不公开d;将明文P加密为密文C,计算方法为:
C=Pemodulor;将密文C解密为明文P,计算方法为:
P=Cdmodulor因为只根据r和e(不是p和q)要计算出d是不可能的。
所以,任何人都可对明文进行加密,但只有授权用户才可对密文解密。
四、算法的流程图
五、核心源代码
1、代替算法
privatestringreplaceMethod()
{
stringoutstr="";
intnum=2;
if(param!
="")
{
num=Convert.ToInt32(param);
}
if(toEncry)
{
char[]temp=inText.ToCharArray();
for(inti=0;i { if(65<=temp[i]&&temp[i]<=90) { temp[i]=Convert.ToChar(65+(temp[i]-65+num)%26); } elseif(97<=temp[i]&&temp[i]<=122) { temp[i]=Convert.ToChar(97+(temp[i]-97+num)%26); } outstr+=Convert.ToString(temp[i]); } } else { char[]temp; stringoneStr; for(intj=1;j<26;j++) { oneStr=""; temp=outText.ToCharArray(); for(inti=0;i { if(65<=temp[i]&&temp[i]<=90) { temp[i]=Convert.ToChar(65+(temp[i]-65+j)%26); } elseif(97<=temp[i]&&temp[i]<=122) { temp[i]=Convert.ToChar(97+(temp[i]-97+j)%26); } oneStr+=Convert.ToString(temp[i]); } outstr+=oneStr+Environment.NewLine; } } returnoutstr; } 2、换位算法 privatestringmoveMethod() { stringoutstr=""; intwidth=2; if(param! ="") { width=Convert.ToInt32(param); } char[]temp; if(toEncry) { temp=inText.ToCharArray(); intlength=temp.Length; for(inti=0;i { for(intj=i;j { outstr+=temp[j]; } } } else { intcount=outText.Length%width; stringoutTextTemp=outText; if(count! =0) { if(count==1) { introwLength=outText.Length/width; outTextTemp=outText.Substring(0,rowLength*2+1); outTextTemp+=""; outTextTemp+=outText.Substring(rowLength*2+1); outTextTemp+=""; } else { outTextTemp=outText+=""; } } temp=outTextTemp.ToCharArray(); intlength=temp.Length; intcolumn=length/width; for(inti=0;i { for(intj=i;j { outstr+=temp[j]; } } } returnoutstr; } 3、DES算法 privatestringDESMethod() { stringsKey=param; if(toEncry) { DESCryptoServiceProviderdes=newDESCryptoServiceProvider(); //把字符串放到byte数组中 //原来使用的UTF8编码,我改成Unicode编码了,不行 byte[]inputByteArray=Encoding.Default.GetBytes(inText); //byte[]inputByteArray=Encoding.Unicode.GetBytes(pToEncrypt); //建立加密对象的密钥和偏移量 //原文使用ASCIIEncoding.ASCII方法的GetBytes方法 //使得输入密码必须输入英文文本 des.Key=ASCIIEncoding.ASCII.GetBytes(sKey); des.IV=ASCIIEncoding.ASCII.GetBytes(sKey); MemoryStreamms=newMemoryStream(); CryptoStreamcs=newCryptoStream(ms,des.CreateEncryptor(),CryptoStreamMode.Write); //Writethebytearrayintothecryptostream //(Itwillendupinthememorystream) cs.Write(inputByteArray,0,inputByteArray.Length); cs.FlushFinalBlock(); //Getthedatabackfromthememorystream,andintoastring StringBuilderret=newStringBuilder(); foreach(bytebinms.ToArray()) { //Formatashex ret.AppendFormat("{0: X2}",b); } ret.ToString(); returnret.ToString(); } else { try { DESCryptoServiceProviderdes=newDESCryptoServiceProvider(); //Puttheinputstringintothebytearray byte[]inputByteArray=newbyte[outText.Length/2]; for(intx=0;x { inti=(Convert.ToInt32(outText.Substring(x*2,2),16)); inputByteArray[x]=(byte)i; } //建立加密对象的密钥和偏移量,此值重要,不能修改 des.Key=ASCIIEncoding.ASCII.GetBytes(sKey); des.IV=ASCIIEncoding.ASCII.GetBytes(sKey); MemoryStreamms=newMemoryStream(); CryptoStreamcs=newCryptoStream(ms,des.CreateDecryptor(),CryptoStreamMode.Write); //Flushthedatathroughthecryptostreamintothememorystream cs.Write(inputByteArray,0,inputByteArray.Length); cs.FlushFinalBlock(); //Getthedecrypteddatabackfromthememorystream //建立StringBuild对象,CreateDecrypt使用的是流对象,必须把解密后的文本变成流对象 StringBuilderret=newStringBuilder(); returnSystem.Text.Encoding.Default.GetString(ms.ToArray()); } catch { return""; } } } 4、MD5算法 privatestringMD5Method() { //FormsAuthentication.HashPasswordForStoringInConfigFile(inText,"MD5").ToLower(); MD5md5=newMD5CryptoServiceProvider(); byte[]data=Encoding.Default.GetBytes(inText); byte[]md5data=md5.ComputeHash(data); md5.Clear(); stringstr=""; for(inti=0;i { str+=md5data[i].ToString("x").PadLeft(2,'0'); } returnstr.ToUpper(); } 5、RSA算法 privatestringRASMethod() { if(toEncry) { stringstr2; try { RSACryptoServiceProviderprovider=newRSACryptoServiceProvider(); provider.FromXmlString(pubKey); byte[]bytes=newUnicodeEncoding().GetBytes(inText); str2=Convert.ToBase64String(provider.Encrypt(bytes,false)); } catch(Exceptionexception) { throwexception; } returnstr2; } else { stringstr2; try { RSACryptoServiceProviderprovider=newRSACryptoServiceProvider(); provider.FromXmlString(prvKey); byte[]rgb=Convert.FromBase64String(outText); byte[]buffer2=provider.Decrypt(rgb,false); str2=newUnicodeEncoding().GetString(buffer2); } catch(Exceptionexception) { throwexception; } returnstr2; } } 六、运行结果分析 1、程序主界面 2、代替算法运行界面 (加密) (解密) 因解密过程中循环位数不可知,所以得到结果很多,但其中一定有一个是正确的。 3、换位算法运行界面 (加密) 解密界面同上 4、DES算法运行界面 (加密) 解密过程同上,如果密钥不对,得到的明文一定不对。 5、MD5算法运行界面 因为MD5没有相应的解密,所以只有加密算法。 6、DES算法运行界面 DES算法密钥如上图。 加密解密截图一样。 七、收获及体会
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息 安全 概论 课程设计 web 入侵 技术