当前位置:文档之家› 信息安全实验报告信息安全概论课程设计

信息安全实验报告信息安全概论课程设计

郑州轻工业学院课程设计报告名称:信息安全概论指导教师:吉星、程立辉姓名:符豪学号:541307030112班级:网络工程13-011.目的数据加密技术要求只有在指定的用户或网络下,才能解除密码而获得原来的数据,这就需要给数据发送方和接受方以一些特殊的信息用于加解密,这就是所谓的密钥。

其密钥的值是从大量的随机数中选取的。

按加密算法分为专用密钥和公开密钥两种。

数据加密技术是网络中最基本的安全技术,主要是通过对网络中传输的信息进行数据加密来保障其安全性,这是一种主动安全防御策略,用很小的代价即可为信息提供相当大的安全保护。

2.题目使用C#编程语言,进行数据的加密与解密。

系统基本功能描述如下:1、实现DES算法加密与解密功能。

2、实现TripleDES算法加密与解密功能。

3、实现MD5算法加密功能。

4、实现RC2算法加密与解密功能。

5、实现TripleDES算法加密与解密功能。

6、实现RSA算法加密与解密功能。

3.功能描述使用该软件在相应的文本框中输入明文,然后点击加密就会立即转化成相应的密文,非常迅速和方便,而且操作简单加流畅,非常好用。

4.需求分析加密软件发展很快,目前最常见的是透明加密,透明加密是一种根据要求在操作系统层自动地对写入存储介质的数据进行加密的技术。

透明加密软件作为一种新的数据保密手段,自2005年上市以来,得到许多软件公司特别是制造业软件公司和传统安全软件公司的热捧,也为广大需要对敏感数据进行保密的客户带来了希望。

加密软件上市以来,市场份额逐年上升,同时,经过几年的实践,客户对软件开发商提出了更多的要求。

与加密软件产品刚上市时前一两年各软件厂商各持一词不同,经过市场的几番磨炼,客户和厂商对透明加密软件有了更加统一的认识。

5.设计说明传统的周边防御,比如防火墙、入侵检测和防病毒软件,已经不再能够解决很多今天的数据保护问题。

为了加强这些防御措施并且满足短期相关规范的要求,许多公司对于数据安全纷纷采取了执行多点产品的战术性措施。

这种片面的部署计划确实可以为他们的数据提供一点点额外的保护,但是在管理上花费昂贵并且操作困难,这种做法并不能为未来的发展提供一个清晰的框架。

加密是确保数据安全最重要的环节。

必须确保数据加密而不是仅仅依赖一个防护基础架构。

对数据进行加密可以让数据不论是在网络中活动、在数据库和电脑中静止或者在工作站中被使用的时候都能防患于未然。

6.源代码主窗体:using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace WindowsFormsApplication1{publicpartialclass Form1 : Form{public Form1(){InitializeComponent();}privatevoid md5ToolStripMenuItem_Click(object sender, EventArgs e){md5 md51 = new md5();md51.Show();}privatevoid dES加密解密ToolStripMenuItem_Click(object sender, EventArgs e){des des1 = new des();des1.Show();}privatevoid rSA加密解密ToolStripMenuItem_Click(object sender, EventArgs e){rsa rsa1 = new rsa();rsa1.Show();}privatevoid帮助ToolStripMenuItem_Click(object sender, EventArgs e){help h = new help();h.Show();}}}Cryptography类:using System;using System.Security.Cryptography;using System.IO;using System.Text;using System.Globalization;using System.Xml.Linq;using System.Collections.Generic;namespace WindowsFormsApplication1{class Encrypter{//DES默认密钥向量privatestaticbyte[] DES_IV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };publicstaticstring EncryptByMD5(string input){MD5 md5Hasher = MD5.Create();byte[] data = puteHash(Encoding.UTF8.GetBytes(input));StringBuilder sBuilder = new StringBuilder();for (int i = 0; i < data.Length; i++){sBuilder.Append(data[i].ToString("x2"));}return sBuilder.ToString();}publicstaticstring EncryptByDES(string input, string key){byte[] inputBytes = Encoding.UTF8.GetBytes(input);byte[] keyBytes = ASCIIEncoding.UTF8.GetBytes(key);byte[] encryptBytes = EncryptByDES(inputBytes, keyBytes, keyBytes);using (DES des = new DESCryptoServiceProvider()){using (MemoryStream ms = new MemoryStream()){using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write)){using (StreamWriter writer = new StreamWriter(cs)){writer.Write(inputBytes);}}}}string result = Convert.ToBase64String(encryptBytes);return result;}publicstaticbyte[] EncryptByDES(byte[] inputBytes, byte[] key, byte[] IV) {DES des = new DESCryptoServiceProvider();des.Key = key;des.IV = IV;string result = string.Empty;using (MemoryStream ms = new MemoryStream()){using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write)){cs.Write(inputBytes, 0, inputBytes.Length);}return ms.ToArray();}}publicstaticstring DecryptByDES(string input, string key){byte[] inputBytes = Convert.FromBase64String(input);byte[] keyBytes = ASCIIEncoding.UTF8.GetBytes(key);byte[] resultBytes = DecryptByDES(inputBytes, keyBytes, keyBytes);string result = Encoding.UTF8.GetString(resultBytes);return result;}publicstaticbyte[] DecryptByDES(byte[] inputBytes, byte[] key, byte[] iv) {DESCryptoServiceProvider des = new DESCryptoServiceProvider();des.Key = key;des.IV = iv;using (MemoryStream ms = new MemoryStream(inputBytes)){using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Read)){using (StreamReader reader = new StreamReader(cs)){string result = reader.ReadToEnd();return Encoding.UTF8.GetBytes(result);}}}}publicstaticstring EncryptString(string input, string sKey){byte[] data = Encoding.UTF8.GetBytes(input);using (DESCryptoServiceProvider des = new DESCryptoServiceProvider()){des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);ICryptoTransform desencrypt = des.CreateEncryptor();byte[] result = desencrypt.TransformFinalBlock(data, 0, data.Length); return BitConverter.ToString(result);}}publicstaticstring DecryptString(string input, string sKey){string[] sInput = input.Split("-".ToCharArray());byte[] data = newbyte[sInput.Length];for (int i = 0; i < sInput.Length; i++){data[i] = byte.Parse(sInput[i], NumberStyles.HexNumber); }using (DESCryptoServiceProvider des = new DESCryptoServiceProvider()){des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);des.IV = ASCIIEncoding.ASCII.GetBytes(sKey); ICryptoTransform desencrypt = des.CreateDecryptor();byte[] result = desencrypt.TransformFinalBlock(data, 0, data.Length); return Encoding.UTF8.GetString(result);}}publicstaticstring EncryptByRSA(string plaintext, string publicKey){UnicodeEncoding ByteConverter = new UnicodeEncoding();byte[] dataToEncrypt = ByteConverter.GetBytes(plaintext);using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider()){RSA.FromXmlString(publicKey);byte[] encryptedData = RSA.Encrypt(dataToEncrypt, false);return Convert.ToBase64String(encryptedData);}}publicstaticstring DecryptByRSA(string ciphertext, string privateKey){UnicodeEncoding byteConverter = new UnicodeEncoding();using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider()){RSA.FromXmlString(privateKey);byte[] encryptedData = Convert.FromBase64String(ciphertext);byte[] decryptedData = RSA.Decrypt(encryptedData, false);return byteConverter.GetString(decryptedData);}}publicstaticstring HashAndSignString(string plaintext, string privateKey){UnicodeEncoding ByteConverter = new UnicodeEncoding();byte[] dataToEncrypt = ByteConverter.GetBytes(plaintext);using (RSACryptoServiceProvider RSAalg = new RSACryptoServiceProvider()){RSAalg.FromXmlString(privateKey);//使用SHA1进行摘要算法,生成签名byte[] encryptedData = RSAalg.SignData(dataToEncrypt, new SHA1CryptoServiceProvider()); return Convert.ToBase64String(encryptedData);}}publicstaticbool VerifySigned(string plaintext, string SignedData, string publicKey) {using (RSACryptoServiceProvider RSAalg = new RSACryptoServiceProvider()){RSAalg.FromXmlString(publicKey);UnicodeEncoding ByteConverter = new UnicodeEncoding();byte[] dataToVerifyBytes = ByteConverter.GetBytes(plaintext);byte[] signedDataBytes = Convert.FromBase64String(SignedData);return RSAalg.VerifyData(dataToVerifyBytes, new SHA1CryptoServiceProvider(), signedDataBytes);}}publicstatic KeyValuePair<string, string> CreateRSAKey(){RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();string privateKey = RSA.ToXmlString(true);string publicKey = RSA.ToXmlString(false);returnnew KeyValuePair<string, string>(publicKey, privateKey);}publicstaticbyte[] GetBytes(string input){string[] sInput = input.Split("-".ToCharArray());byte[] inputBytes = newbyte[sInput.Length];for (int i = 0; i < sInput.Length; i++){inputBytes[i] = byte.Parse(sInput[i], NumberStyles.HexNumber); }return inputBytes;}}}using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Security.Cryptography;namespace WindowsFormsApplication1{publicpartialclass md5 : Form{public md5(){InitializeComponent();}privatevoid label1_Click(object sender, EventArgs e){}privatevoid md5_Load(object sender, EventArgs e){}privatevoid button1_Click(object sender, EventArgs e){if (textBox1.Text != ""){textBox2.Text = Encrypter.EncryptByMD5(textBox1.Text); }elseMessageBox.Show("不能为空");}}}7.测试报告8.心得体会通过本次实验,我学习到了数据在互联网中的传输并不是绝对的安全。

相关主题