当前位置:网站首页>信息安全实验一:DES加密算法的实现
信息安全实验一:DES加密算法的实现
2022-07-07 06:38:00 【一顿吃不饱】
一、实验目的及要求
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"); // 解密
}
}
边栏推荐
- Skill review of test engineer before interview
- Huawei HCIP - datacom - Core 03 jours
- Postman interface debugging method
- PMP Exam details after the release of the new exam outline
- Detailed learning notes of JVM memory structure (I)
- E-commerce campaign Guide
- H3C VXLAN配置
- What are the conditions for applying for NPDP?
- [chaosblade: node disk filling, killing the specified process on the node, suspending the specified process on the node]
- What is the value of getting a PMP certificate?
猜你喜欢
随机推荐
Postman data driven
Register address name mapping
Systick滴答定时器
Reading notes of pyramid principle
The use of recycling ideas
Interface test API case, data and interface separation
External interrupt to realize key experiment
MySql数据库-事务-学习笔记
Cesium load vector data
十二、排序
MySQL master-slave delay solution
Data association between two interfaces of postman
C语言指针(习题篇)
How to count the number of project code lines
Reflections on the way of enterprise IT architecture transformation (Alibaba's China Taiwan strategic thought and architecture practice)
H3C vxlan configuration
Common short chain design methods
Do you have any certificates with high gold content?
H3C VXLAN配置
What are the conditions for applying for NPDP?









