Andrade S-DES 用户指南
开发人员:徐涵浩 明子鸿
指南撰写人员:明子鸿 徐涵浩
单位:重庆大学大数据与软件学院
联系方式:shennmo@foxmall.com
1.引言
1.1 编写目的
欢迎使用S-DES加解密程序用户指南。本指南将向您介绍如何使用Java语言编写的S-DES(Simplified Data Encryption Standard)加解密程序。这个程序是基于”信息安全导论”课程中第5次课程所讲述的S-DES算法开发而成,旨在帮助您加密和解密数据,以保护您的信息安全。
S-DES是一种简化的数据加密标准,它采用了DES算法的关键思想,但将密钥长度和轮数减少,以提供更快的执行速度和更简单的实现。通过本程序,您可以学习和实践S-DES算法的基本原理,并将其应用于实际数据加密和解密任务中。
在本用户指南中,您将找到以下内容:
①程序安装与配置:了解如何下载、安装和配置S-DES加解密程序;
②基本用法:学习如何使用程序进行数据加密和解密,包括输入明文、选择密钥、查看加密结果以及暴力破解密钥;
③高级选项:深入了解S-DES算法的不同参数和选项,以满足不同的加密需求,如使用ASCⅡ编码的字符串进行加解密;
④实例演示:通过示例演示来展示程序的实际运行,以帮助您更好地理解S-DES加解密的过程。
无论您是信息安全领域的学生、专业人士还是对加密算法感兴趣的任何人,本用户指南将为您提供宝贵的资源,帮助您掌握S-DES算法并将其应用于实际场景。让我们一起开始吧,保障您的数据安全!
1.2 项目背景
1.2.1 项目来源
S-DES是一个基于DES(Data Encryption Standard)算法的简化版本,旨在提供更快的执行速度和更简单的实现。DES是一种广泛使用的对称密钥加密算法,但它的密钥长度较长,复杂度较高。因此,S-DES被创建为一种教育和理解加密算法原理的工具。
在”信息安全导论”课程中,S-DES被用来教授学生加密算法的基本概念。通过实现S-DES加解密程序,学生可以深入了解加密算法的工作原理,包括数据分块、轮函数、密钥生成和替代置换等基本概念。这个程序是基于”信息安全导论”课程中第5次课程所讲述的S-DES算法开发而成,目的是帮助学生掌握加密算法的核心原理,以便他们能够理解信息安全的重要性以及如何保护数据。
1.2.2 开发单位
重庆大学大数据与软件学院。
1.2.3 主管部门
重庆大学大数据与软件学院2021级软件工程03班竹园五栋513。
1.3 定义
①DES:全称为Data Encryption Standard(数据加密标准),是一种对称密钥加密算法。它于1977年由美国国家标准与技术研究所(NIST)发布,并被美国政府采用作为非机密数据的加密标准。DES的主要设计目标是提供一种高度安全的数据加密机制,以保护敏感数据免受未经授权的访问和窃取;
②S-DES:全称为Simplified Data Encryption Standard(简化版数据加密标准),是一个基于DES算法的简化版本,旨在提供更快的执行速度和更简单的实现。DES是一种广泛使用的对称密钥加密算法,但它的密钥长度较长,复杂度较高,因此,S-DES被创建为一种教育和理解加密算法原理的工具;
③P-Box:全称为Permutation Box(置换盒),是在密码学中经常用于加密和解密过程中的一种置换操作。P-Box用于重新排列输入数据的位,以创建输出数据。它的主要目的是增加密码算法的复杂性,提高安全性,以及打乱输入数据的分布,使密码更难以破解;
④S-Box:全称为Substitution Box(替代置换盒),是在密码学中常见的一种非线性变换,用于加密和解密过程中的数据转换。S-Box的主要作用是将输入数据的一部分映射到输出数据,通常用于替代明文中的位,以增加密码算法的混淆性和安全性;
⑤IP:全称为Initial Permutation(初始置换),是在密码学中用于数据加密的一种置换操作。它通常用于对明文数据进行初始置换,以改变数据的排列顺序和分布,从而增加密码算法的安全性;
⑥SP-Box:全称为Substitution-Permutation Box,是在密码学中常见的一种组合置换操作,通常用于分组密码(block cipher)的加密和解密算法中。SP-Box包括两部分,即替代(Substitution)和置换(Permutation),它的主要目的是对输入数据块进行非线性替代和线性置换,以增加密码算法的复杂性和安全性;
⑦SW:全称为Swap,是一种基本的计算机编程操作,用于交换两个变量的值或交换数据结构中两个元素的位置。SW操作通常用于改变变量或数据结构的状态,以便实现特定的算法或逻辑。SW操作是计算机科学中的一种常见操作,通常用于排序算法、数据交换和优化等领域。
1.4 参考文献
qq_32444825.2018-03-01.软件用户手册(软件使用说明书)模板.CSDN博客。
2 软件概述
2.1 目标
S-DES(Simplified Data Encryption Standard)算法实现程序的主要目的是提供一种简化的数据加密和解密方法,旨在教育和理解经典的DES算法的基本原理。S-DES是DES算法的一个简化版本,用于教育和学习密码学的目的,因此其主要目标是教育和演示而不是实际的安全性。以下是S-DES算法实现程序的主要目的:
①教育和学习:S-DES程序旨在帮助学生、研究人员和密码学爱好者理解对称密钥加密算法的基本工作原理。通过编写和运行S-DES程序,用户可以深入了解分块密码和替代-置换网络等密码学概念;
②实验和练习:S-DES算法通常作为密码学教育的实验之一。学生可以通过编写、调试和运行S-DES程序来进行实验和练习,以加强他们对加密算法的理解;
③原理演示:S-DES程序用于演示DES算法的核心原理,如初始置换、S-Box、P-Box、密钥生成等。通过观察S-DES程序的运行过程,用户可以看到数据是如何在每个加密轮中进行变换和混淆的;
④算法测试:S-DES程序可以用于测试和验证其他程序或库中的DES或S-DES实现。它可以用作参考,以确保其他程序的正确性;
⑤密码算法研究:研究人员和密码学爱好者可以使用S-DES程序来进行密码算法的研究和实验,以改进和深入研究加密技术;
需要注意的是,S-DES算法的安全性较低,不适合用于实际的数据加密应用。然而,它仍然是一个有用的教育工具,用于帮助人们理解和学习加密算法的基本概念和原理。正规的数据加密应用通常使用更强大和安全的加密算法,如AES(高级加密标准)。
3 运行环境
3.1 硬件(推荐环境)
处理器:AMD Ryzen 7 5800H with Radeon Graphics
显卡:NVIDIA GeForce RTX 3060 Laptop GPU
内存:Samsung DDR4 3200MHz 32GB
硬盘:Samsung SSD 980 1TB
3.2 软件(推荐环境)
操作系统:Windows 11
集成开发环境:IntelliJ IDEA 2022.1.3
Java开发工具包:JDK 1.8
4 使用说明
4.1 安装与初始化
4.1.1 安装Java JDK
- 如果您的计算机上没有安装Java JDK,请先下载并安装适用于您操作系统的Java JDK。您可以从Oracle官方网站(https://www.oracle.com/java/technologies/javase-downloads.html)或其他可信来源获取Java JDK的安装程序;
- 安装Java JDK时,请按照安装向导的步骤进行操作。完成后,您将具备Java运行环境。
4.1.2 下载S-DES程序
- 下载Andrade小组在GitHub仓库中托管的S-DES程序的源代码到本地。
4.1.3 编译或运行S-DES程序
- 推荐下载JetBrains IntelliJ IDEA(通常简称为IDEA),一款由JetBrains公司开发的强大的集成开发环境(IDE),专门用于Java开发,提供了丰富的功能、高度的可定制性和出色的性能;
- 选择src/main/java/mainApp.java点击运行即可。

4.2 输入
4.2.1 输入格式
输入参数为8bit二进制数或者ASCⅡ编码(分组为1byte)的字符串、10bit密钥(也可以由本系统随机生成);

注:界面左上角的“输入ASCⅡ字符”勾选表示输入原文为ASCⅡ编码的字符串,不勾选表示输入为8bit二进制数。
4.2.2 输入样例
① 密钥:1111001010
原文:10101010

② 密钥:1000110000
原文:Andrade

③ 密钥:0011111000
密文:10101010

④ 密钥:1000110000
密文:>ëVÓ

4.3 输出
4.3.1 输出格式
输出为8bit二进制数(输入为8bit二进制数时)或ASCⅡ编码字符串(输入为ASCⅡ编码字符串时)。
4.3.2 输出样例
① 密钥:1111001010
原文:10101010
密文:01001001

② 密钥:1000110000
原文:Andrade
密文:>ëVÓ

③ 密钥:0011111000
密文:10101010
原文:10111110

④ 密钥:1000110000
密文:>ëVÓ
原文:Andrade

5 运行说明
5.1 基础加解密功能
5.1.1 用户交互界面
①通过勾选左上角的“输入ASCⅡ字符”可以调整输入原文/密文的格式;
②界面左半部分是输入原文进行加密得到密文,右半部分是输入密文进行解密得到原文;
③“结果”处的密文框和原文框无法直接进行编辑,只能输出展示“加密”和“解密”的结果;

5.1.2 生成密钥
①点击“随机生成密钥”按钮,可以随机生成十位二进制密钥;


②可以手动输入密钥;

5.1.3 加密解密流程
本系统提供纯二进制加密解密功能及ASCⅡ编码字符串加密解密功能,在用户交互界面左上角可以选择,不勾选表示使用纯二进制数字进行加密解密,勾选表示使用ASCⅡ编码字符串进行加密解密。
① 随机生成密钥:1011001011
原文:10101010
求得密文:11101000

② 密钥:1011001011
密文:11101000
解得原文:10101010

③ 密钥:0111001000
原文:Andrade
求得密文:µH%%X

④ 密钥:0111001000
密文:µH%%X
解得原文:Andrade

5.2 暴力破解
5.2.1 用户交互界面
“暴力破解界面”可以输入明密文对,点击“暴力解密”按钮即可找到可能的密钥,在下方文本框输出。IDEA运行窗口(Run)处可以输出“暴力破解”窗口的创建时间及找到密钥的时间,且本系统可以实现单线程或多线程破解。

5.2.2 单线程破解
破解所得可能的密钥:
①0011010110;
②0111010110;
③1000000000;
④1001001100;
⑤1100000010;
⑥1101001100。


5.2.3 双线程破解
破解所得可能的密钥:
①1000000000;
②1001001100;
③1100000010;
④1101001100;
⑤0011010110;
⑥0111010110;


6 故障排除
6.1 异常处理
①输入密钥或者8bit二进制数原文时不规范;


②输入为ASCⅡ编码字符串,但没有勾选相应选项;

6.2 常见问题
6.2.1 问题1:程序无法启动或崩溃
- 排除方法:
- 确保已安装所需的Java JDK并正确配置了JAVA_HOME环境变量;
- 检查程序的依赖项,确保所有必需的库和文件都位于正确的位置;
- 检查程序的日志文件或控制台输出,以查看是否有错误消息,根据错误消息进行进一步的排除。
6.2.2 问题2:加密或解密操作失败
- 排除方法:
- 检查输入数据和密钥的格式,确保它们符合程序的要求;
- 验证密钥生成过程,确保生成的密钥正确;
- 检查加密或解密算法的实现,确保它遵循S-DES算法规范;
- 如果可能,尝试使用其他输入数据和密钥进行测试,以确定问题是否特定于某个数据集。
6.2.3 问题3:程序性能不佳或响应时间过长
- 排除方法:
- 检查计算密集型操作,如数据加密或解密,是否有优化的机会,例如使用更高效的算法或数据结构;
- 确保程序没有内存泄漏问题,通过检查内存使用情况来排除此类问题;
- 考虑并发处理,使用多线程来提高性能,特别是在大规模数据处理时。
6.2.4 问题4:用户界面问题
- 排除方法:
- 检查用户界面元素的布局和设计,确保它们易于理解和使用;
- 确保用户界面在不同操作系统和分辨率下都能正常工作;
- 收集用户反馈,并根据反馈来改进用户界面和用户体验。
6.2.5 问题5:安全性问题
- 排除方法:
- 定期更新程序以修复已知的安全漏洞;
- 使用密码学库和工具来确保数据的机密性和完整性;
- 进行安全审查,以识别潜在的安全问题并采取措施加以解决。
6.3 技术支持
有其他任何问题,请随时联系我们,请备注来意!
邮箱:shennmo@foxmall.com
7 联系我们
7.1 关于开发者团队
课程名称:信息安全导论
教学班级:992987-001
任课教师:胡海波
单位:重庆大学大数据与软件学院
主管部门:重庆大学大数据与软件学院2021级软件工程03班竹园五栋513
小组代号:Andrade
小组成员:明子鸿 徐涵浩
7.2 联系方式
邮箱:shennmo@foxmall.com
结束语
通过这份S-DES算法实现的用户指南,我们希望您已经获得了关于如何使用这个强大的工具来加密和解密数据的完整了解。S-DES算法是一种经典的加密算法,它可以用于保护您的敏感信息,无论是在学术研究中还是在实际应用中。
我们鼓励您在使用S-DES算法实现程序时,按照本指南中的说明进行操作。无论您是初学者还是经验丰富的开发者,我们都相信这份指南可以为您提供有用的信息和指导。如果您在使用过程中遇到任何问题、疑问或需要进一步的帮助,请随时联系我们,我们将竭诚为您提供支持。
加密是信息安全的关键一环,我们希望S-DES算法实现程序能够帮助您保护您的数据并提供额外的安全性。请牢记在使用加密时,密钥的保密性至关重要,确保只有授权人员能够访问它们。
最后,感谢您选择使用S-DES算法实现程序。我们希望它能够满足您的加密需求,并为您的项目和研究提供有价值的支持。