密码学、密码学和密码分析

让我们进入编写最终项目时需要的理论知识。让我们更多地了解密码学及其组成部分。同时,我们将更多地了解您在编写最终项目时将使用的密码。

1. 密码学及其组成部分

密码学是一个知识领域,包括:

  • 密码学(密码学)。

    密码学就​​是对信息进行加密以防止未经授权的访问。此信息可以是文本、数字图像、音频信号等。加密过程会生成信息(数据)的加密版本,称为密文或代码文本。

  • 密码分析(破解这些密码的方法)。

    密码分析检查破解密码的方法以及如何应用这些方法。换句话说,密码分析执行相反的任务,研究将加密信息转换为明文的方法。

2. 密钥

密钥是用于加密和解密信息的一组数据。成功解密信息的能力取决于所使用的密钥。如果由于某种原因丢失了密钥,则无法解密数据。

加密密钥的大小以位为单位。这意味着加密密钥的长度。128 位的长度提供了良好的加密强度。

加密密钥的类型:

  1. 对称密钥(秘密密钥)。不出所料,此类密钥用于所谓的对称密钥算法。它们的主要目的是执行正向或反向密码转换(加密/解密,消息验证码的验证)。

  2. 非对称密钥。它们用于非对称密钥加密算法(例如,在验证电子数字签名时)。

由于我们将使用对称密钥加密算法,因此我们不会在这里详细介绍。

3.替换字母表

替换字母表是用于对输入字符进行编码的一组完整字符。

4. 密码分析方法

有许多不同的密码分析途径和方法,即破解密码的方法。

我们将描述其中最简单的:

  1. 蛮力(或蛮力搜索)正在尝试所有可能的密钥,直到我们找到正确的密钥。这种方法的优点是简单。缺点是它不适用于涉及大量可能密钥的密码。

  2. 基于统计数据的密码分析——在这种方法中,我们统计密文中不同字符的出现次数,然后根据明文中不同字符出现频率的统计数据进行解密。

    例如:我们知道字母P在英文文本中出现的频率是1.9%。当我们分析密文时,我们寻找一个以相同频率出现的符号,然后断定它是字母 P。

    这种方法的缺点是它依赖于文本的特定语言、作者和风格。

5.凯撒密码

这是最简单和最著名的加密方法之一。它的名字当然来自皇帝盖乌斯·尤利乌斯·凯撒,他用这种方式与将军们秘密通信。

凯撒密码是一种替换密码,其中明文中的每个字符都被一个字符替换,该字符在字母表中的左侧或右侧位置为某个常数。

假设我们将班次设置为 3。在这种情况下,A 将替换为 D,B 将变为 E,依此类推。

这是完成最终项目所需的最少理论知识。让我们继续任务描述!

Java 语法模块的最终项目。让我们写一个密码分析器

你的任务是编写一个使用凯撒密码的程序。

让您的密码字母表由英文字母表的所有字母以及标点符号(.,””:-!?空格)组成。如果您遇到不属于我们替换字母表的字符,请跳过它们。

强制性要求

该程序应该有两种模式:

  1. 加密/解密。该程序必须使用给定的加密密钥加密和解密文本。

    该程序应接收到包含源文本的文本文件的路径,并创建一个包含相应密文的文件。

  2. 通过蛮力攻击进行密码分析

    在这种模式下,程序必须破解包含在输入文本文件中的密文。

    如果用户选择暴力破解,则程序必须独立枚举可能的密钥,选择正确的密钥,然后解密文本。

    想想程序应该使用什么标准来成功识别正确的密钥。您可能需要注意单词之间的空格或标点符号的正确使用。

附加(可选)要求

1. 统计分析密码分析

用户应该能够选择两种密码分析方法中的一种。如果用户选择统计分析模式,则提示用户以明文形式加载额外的文本文件,最好是同一作者和相同风格的文件。根据第二个文件的内容,程序应该编译字符出现的统计数据,然后尝试使用这些统计数据对密文进行密码分析。

2. 用户界面

根据您的判断制作与用户交互的对话框。如果需要,您可以使用 Swing 和 JavaFX 图形框架。

将完成的解决方案上传到公共 Git 存储库。

该项目将在小组通过时进行检查