DES文件加密实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DES文件加密实验报告
一、DES算法简介
DES是Data Encryption Standard(数据加密标准)的缩写。它是由IBM公司研制的一种加密算法,美国国家标准局于1977年公布把它作为非机要部门使用的数据加密标准,二十年来,它一直活跃在国际保密通信的舞台上,扮演了十分重要的角色。
DES是一个分组加密算法,他以64位为分组对数据加密。同时DES也是一个对称算法:加密和解密用的是同一个算法。它的密匙长度是56位(因为每个第8 位都用作奇偶校验),密匙可以是任意的56位的数,而且可以任意时候改变。其中有极少量的数被认为是弱密匙,但是很容易避开他们。所以保密性依赖于密钥。
二、用C#实现DES文件加密
指定文件,输入密钥来加密和解密数据。DESCryptoServiceProvider基于对称加密算法。Symmetricencryption 需要一个密钥和一个初始化向量(IV) 加密请。要解密的数据,必须具有相同的密钥和IV。使用的加密提供程序来获取encryptingobject (CreateEncryptor) 创建CryptoStream类的一个实例,现有输出文件流对象的构造函数的一部分。
要解密文件,执行以下步骤:创建一个方法,并命名该按钮DecryptFile.解密过程是类似于theencryption 进程,但是,DecryptFile过程从EncryptFile过程的两个主要区别。而不是CreateEncryptor使用CreateDecryptor来创建CryptoStream对象,用于指定如何使用该对象。解密的文本写入目标文件,CryptoStream对象是现在而不是目标流的来源。
三、运行环境
可将DES文件加解密软件的可执行.exe文件直接在xp,win7等系统上运行。
四、实验结果
1、开始界面
2、打开要加密文件、输入密钥
3、加密
4、打开要解密文件、输入密钥
5、解密
五、主要算法代码
public static void EncryptFile(string sInputFilename, string sOutputFilename, string sKey)
{
FileStream fsInput = new FileStream(sInputFilename, FileMode.Open, FileAccess.Read);
FileStream fsEncrypted = new FileStream(sOutputFilename, FileMode.Create, FileAccess.Write);
DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
ICryptoTransform desencrypt = DES.CreateEncryptor();
CryptoStream cryptostream = new CryptoStream(fsEncrypted, desencrypt, CryptoStreamMode.Write);
byte[] bytearrayinput = new byte[fsInput.Length];
fsInput.Read(bytearrayinput, 0, bytearrayinput.Length);
cryptostream.Write(bytearrayinput, 0, bytearrayinput.Length);
cryptostream.Close();
fsInput.Close();
fsEncrypted.Close();
}
public static void DecryptFile(string sInputFilename, string sOutputFilename, string sKey)
{
try
{
DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
FileStream fsread = new FileStream(sInputFilename, FileMode.Open, FileAccess.Read);
ICryptoTransform desdecrypt = DES.CreateDecryptor();
CryptoStream cryptostreamDecr = new CryptoStream(fsread, desdecrypt, CryptoStreamMode.Read);
StreamWriter fsDecrypted = new StreamWriter(sOutputFilename);
fsDecrypted.Write(new StreamReader(cryptostreamDecr,
Encoding.GetEncoding("GB2312")).ReadToEnd());
fsDecrypted.Flush();
fsDecrypted.Close();
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}