当前位置:网站首页>信息安全实验一: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"); // 解密
}
}
边栏推荐
- Postman interface test (I. installation and use)
- 串口實驗——簡單數據收發
- 浏览器中如何让视频倍速播放
- 【ChaosBlade:节点磁盘填充、杀节点上指定进程、挂起节点上指定进程】
- Implementation of corner badge of Youmeng message push
- 答案在哪里?action config/Interceptor/class/servlet
- Ppt template and material download website (pure dry goods, recommended Collection)
- What is the use of PMP certificate?
- Serializer & modelserializer of DRF serialization and deserialization
- How can I apply for a PMP certificate?
猜你喜欢
随机推荐
2020 year end summary
【istio简介、架构、组件】
How to count the number of project code lines
超十万字_超详细SSM整合实践_手动实现权限管理
Do you have any certificates with high gold content?
Cmake command line use
Serial port experiment - simple data sending and receiving
Common short chain design methods
STM32 serial port register library function configuration method
端口复用和重映像
二叉树高频题型
What are the suggestions for PMP candidates?
C language pointer (special article)
Hard core sharing: a common toolkit for hardware engineers
On December 8th, 2020, the memory of marketing MRC application suddenly increased, resulting in system oom
Zen - batch import test cases
Summary of PMP learning materials
Chaosblade: introduction to chaos Engineering (I)
Full link voltage test of the e-commerce campaign Guide
Led analog and digital dimming



![[SVN] what is SVN? How do you use it?](/img/45/a7df8989f18f0a6185582389398d1a.png)





