密码学、密码学和密码分析
让我们进入编写最终项目时需要的理论知识。让我们更多地了解密码学及其组成部分。同时,我们将更多地了解您在编写最终项目时将使用的密码。
1. 密码学及其组成部分
密码学是一个知识领域,包括:
-
密码学(密码学)。
密码学就是对信息进行加密以防止未经授权的访问。此信息可以是文本、数字图像、音频信号等。加密过程会生成信息(数据)的加密版本,称为密文或代码文本。
-
密码分析(破解这些密码的方法)。
密码分析检查破解密码的方法以及如何应用这些方法。换句话说,密码分析执行相反的任务,研究将加密信息转换为明文的方法。
2. 密钥
密钥是用于加密和解密信息的一组数据。成功解密信息的能力取决于所使用的密钥。如果由于某种原因丢失了密钥,则无法解密数据。
加密密钥的大小以位为单位。这意味着加密密钥的长度为。128 位的长度提供了良好的加密强度。
加密密钥的类型:
-
对称密钥(秘密密钥)。不出所料,此类密钥用于所谓的对称密钥算法。它们的主要目的是执行正向或反向密码转换(加密/解密,消息验证码的验证)。
-
非对称密钥。它们用于非对称密钥加密算法(例如,在验证电子数字签名时)。
由于我们将使用对称密钥加密算法,因此我们不会在这里详细介绍。
3.替换字母表
替换字母表是用于对输入字符进行编码的一组完整字符。
4. 密码分析方法
有许多不同的密码分析途径和方法,即破解密码的方法。
我们将描述其中最简单的:
-
蛮力(或蛮力搜索)正在尝试所有可能的密钥,直到我们找到正确的密钥。这种方法的优点是简单。缺点是它不适用于涉及大量可能密钥的密码。
-
基于统计数据的密码分析——在这种方法中,我们统计密文中不同字符的出现次数,然后根据明文中不同字符出现频率的统计数据进行解密。
例如:我们知道字母P在英文文本中出现的频率是1.9%。当我们分析密文时,我们寻找一个以相同频率出现的符号,然后断定它是字母 P。
这种方法的缺点是它依赖于文本的特定语言、作者和风格。
5.凯撒密码
这是最简单和最著名的加密方法之一。它的名字当然来自皇帝盖乌斯·尤利乌斯·凯撒,他用这种方式与将军们秘密通信。
凯撒密码是一种替换密码,其中明文中的每个字符都被一个字符替换,该字符在字母表中的左侧或右侧位置为某个常数。
假设我们将班次设置为 3。在这种情况下,A 将替换为 D,B 将变为 E,依此类推。
这是完成最终项目所需的最少理论知识。让我们继续任务描述!
Java 语法模块的最终项目。让我们写一个密码分析器
你的任务是编写一个使用凯撒密码的程序。
让您的密码字母表由英文字母表的所有字母以及标点符号(.,””:-!?空格)组成。如果您遇到不属于我们替换字母表的字符,请跳过它们。
强制性要求
该程序应该有两种模式:
-
加密/解密。该程序必须使用给定的加密密钥加密和解密文本。
该程序应接收到包含源文本的文本文件的路径,并创建一个包含相应密文的文件。
-
通过蛮力攻击进行密码分析
在这种模式下,程序必须破解包含在输入文本文件中的密文。
如果用户选择暴力破解,则程序必须独立枚举可能的密钥,选择正确的密钥,然后解密文本。
想想程序应该使用什么标准来成功识别正确的密钥。您可能需要注意单词之间的空格或标点符号的正确使用。
附加(可选)要求
1. 统计分析密码分析
用户应该能够选择两种密码分析方法中的一种。如果用户选择统计分析模式,则提示用户以明文形式加载额外的文本文件,最好是同一作者和相同风格的文件。根据第二个文件的内容,程序应该编译字符出现的统计数据,然后尝试使用这些统计数据对密文进行密码分析。
2. 用户界面
根据您的判断制作与用户交互的对话框。如果需要,您可以使用 Swing 和 JavaFX 图形框架。
将完成的解决方案上传到公共 Git 存储库。
该项目将在小组通过时进行检查
GO TO FULL VERSION