信息安全实验一:DES加密算法的实现
一、实验目的及要求
1.熟悉加密、解密算法;懂得加密在通信中的重要作用;
2.对输入的十六进制数加密(把输入的字符转化成整数),比较输入和输出,当把输入的数改变一个比特时,比较输出的变化,说明原因。
3.实现对一个文件进行加解密,提交程序代码和执行结果。
二、实验内容
本实验通过用DES算法对实际的数据进行加密和解密来深刻了解DES的运行原理。根据所提供的程序分析DES算法的实现过程。在分析密钥生成函数、加密函数(8字节)、解密函数、测试函数和密钥长度检验函数的基础上,用C/VC++或Java语言编写程序实现对文本文件进行加解密。
三、实验环境
运行windows或Linux操作系统的PC机,具有VC(windows)、gcc(Linux)等C语言编译环境或Java环境。
四、实验步骤及结果分析
- 运行结果
1.1、原文件
加密后的文件
解密后的文件
- 代码
public class TestDES {
Key key;
public TestDES(String str) {
getKey(str);// 生成密匙
}
// 根据参数生成KEY
public void getKey(String strKey) {
try {
KeyGenerator _generator = KeyGenerator.getInstance("DES");
_generator.init(new SecureRandom(strKey.getBytes()));
this.key = _generator.generateKey();
_generator = null;
}
catch (Exception e) {
throw new RuntimeException("Error initializing SqlMap class. Cause: " + e);
}
}
public void encrypt(String file, String destFile) throws Exception {
Cipher cipher = Cipher.getInstance("DES");
// cipher.init(Cipher.ENCRYPT_MODE, getKey());
cipher.init(Cipher.ENCRYPT_MODE, this.key);
InputStream is = new FileInputStream(file);
OutputStream out = new FileOutputStream(destFile);
CipherInputStream cis = new CipherInputStream(is, cipher);
byte[] buffer = new byte[1024];
int r;
while ((r = cis.read(buffer)) > 0) {
out.write(buffer, 0, r);
}
cis.close();
is.close();
out.close();
}
public void decrypt(String file, String dest) throws Exception {
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.DECRYPT_MODE, this.key);
InputStream is = new FileInputStream(file);
OutputStream out = new FileOutputStream(dest);
CipherOutputStream cos = new CipherOutputStream(out, cipher);
byte[] buffer = new byte[1024];
int r;
while ((r = is.read(buffer)) >= 0) {
cos.write(buffer, 0, r);
}
cos.close();
out.close();
is.close();
}
public static void main(String[] args) throws Exception {
TestDES td = new TestDES("24234");
td.encrypt("D:/Desktop/test.txt", "D:/Desktop/test1.txt"); // 加密
td.decrypt("D:/Desktop/test1.txt", "D:/Desktop/test2.txt"); // 解密
}
}
信息安全实验一:DES加密算法的实现相关推荐
- 实验一 DES加密算法编程实现
华南理工大学 软件学院 陈春华 (博士) chunhuachen@scut.edu.cn 一. 实验目的 通过使用DES 算法对实验数据进行加密和解密,掌握现代分组密码算法基本原理,熟练掌握DES 算 ...
- c语言des算法实验报告,c语言实现des算法des加密算法实验报告
c语言实现des算法des加密算法实验报告 (23页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 xx 工程大学工程大学实验报告实验报告 ...
- 软考信息安全工程师必会--3000+字文章浅析DES加密算法
目录 前言 什么是DES加密算法 整体流程 IP置换 子密钥K 压缩置换1 循环左移 拓展置换2 拓展置换E S盒代替 S1盒 S2盒 S3盒 S4盒 S5盒 S6盒 S7盒 S8盒 P盒置换 末置换 ...
- DES加密算法安全性评估
DES加密算法应用误区 DES算法具有极高安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法.而56位长的密钥的穷举空间为256,这意味着如果一台计算机的速度是每一秒种 ...
- 算法科普:神秘的 DES 加密算法
1 前言 DES 算法是一种常见的分组加密算法,由IBM公司在1971年提出.DES 算法是分组加密算法的典型代表,同时也是应用最为广泛的对称加密算法.本文将详细讲述DES 的原理以及实现过程. 1. ...
- des加密算法python代码_python des加密算法代码(pydes模块加密)
python加密解密模块:pyDES模块,用来提供 DES.Triple-DES 的加密算法. 专题教程: DES加密算法,DES加密解密 python des加密解密算法 例子,Python DES ...
- java实验二答案天津商业大学_天津商业大学信息安全实验一
天津商业大学信息安全实验一 1<信息安全技术>实 验 报 告 书实验名称: 实验一Internet应用风险专 业: 电子商务班 级: 1203班姓 名: 代常发学 号: 20124934指 ...
- destools php_php DES加密算法实例分析
本文实例讲述了php DES加密算法.分享给大家供大家参考,具体如下: yii框架的DES代码 /** *@see Yii CSecurityManager; */ class Des{ public ...
- 科软-信息安全实验3-Rootkit劫持系统调用
目录 一 前言 二 Talk is cheap, show me the code 三 前期准备 四 效果演示 五 遇到的问题&解决 六 18.04的坑 七 参考资料 八 老师可能的提问 一 ...
- 证明:DES解密算法是DES加密算法的逆
证明: 由于DES算法是在Feistel网络结构的输入和输出阶段分别初始置换IP和初始逆置换IP-1而构成的,其余DES和Feistel相同,IP和IP–1互逆.所以只需证明Feistel解密算法和加 ...
最新文章
- Matlab与线性代数 -- 矩阵的重组4
- CMD如何生成文件夹目录结构
- Eclipse设置字体
- VS 2019要来了,是时候了解一下C# 8.0新功能
- svn安装教程 mysql_CentOS6.4 下安装SVN的详细教程(超详细)
- postgresql 客户端_一款功能强大的数据库客户端:DataGrip
- SpringMVC自学日志03(SpringMVC注解)
- spring boot入门学习---热部署
- mars java安卓视频教程下载_mars老师[Android开发视频教学].01_18 文件下载 源码
- 一文带你详细了解光纤传感器
- Java中抽象类和接口的区别
- 广义相对论和量子力学在哪些地方发生了严重的冲突(转)
- struts2优点总结
- Axure的入门到精通(一)——基础使用及常用快捷键
- Linux下的按键精灵xdotool
- lumberjack 实现按时间分割日志文件
- Object Removal by Exemplar-Based Inpainting 翻译
- 皇氏集团迷途知返,但乳业市场还能接受它吗?
- 工作中的纠结——区分于底层OR界面
- 文件头文件尾全面总结