2022-3-2 UOOC 计算机安全导论 一 对称加密方式(置换、替代、多表;维吉尼亚) 【T.O.CTF】

本文主要是介绍2022-3-2 UOOC 计算机安全导论 一 对称加密方式(置换、替代、多表;维吉尼亚) 【T.O.CTF】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

0、前言

我于这个学期选修了深圳大学开展的计算机安全导论,权作为网安方面小小的导引,促进自己学习。同时也修读了深圳大学的 现代密码学 ,这两门慕课上完都会更新随想。麻烦大家多多指教。

我们首先了解的是密码学基础,因为本人主要学习re,因此学习密码学倒是门新的挑战,废话不多说了,下边来写内容:

1、密码学基础

信息,作为人类文明重要的黏合剂,在几千年的文明史里,不断地扮演更重要的作用。在现代社会,掌握了信息就掌握了机会,就掌握了财富。于是人们就会想方设法将重要的信息加密、混淆,以期信息劫持者无法理解,而信息真正的接受者却能看懂信息,于是加密方和解密方的竞争开始了。

凯撒密码应该是最早应用于战争信息传递加密的加密算法(加密器),凯撒密码(英语:Caesar cipher),或称凯撒加密凯撒变换变换加密,是一种最简单且最广为人知的加密技术。凯撒密码是一种“替换”的加密技术,需要加密的“原信息”中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换为加密好的信息。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。

我们明确一下密码学中的名词,以方便我们学习(方便我打少几个字):

1、明文:指未加密的,可以正常阅读,表达信息发出者明确意志的信息。

2、密文:指经过各种加密后,信息劫持者无法直接阅读、得知发出者明确意志的文字。

3、密钥:发出方和接收方使用的,用于解密密文的秘密信息

我们根据密钥对加密方法进行分类,而上边介绍的凯撒密码,因为信息发送和接受方都使用一个密钥(这里的密钥是3,因为发送和接受方都知道凯撒密码的加解密规则,这个规则就是密钥),因此被称为对称加密。

相对的,发收双方使用不同密钥的,则是非对称加密。

对称加密被称为常规加密、私钥加密、单钥加密等,而非对称加密被称为公钥加密。

我们刚刚初步感受过私钥加密的操作,我们现在来明确一下对称加密的模型,具体为:

 其中,加密算法可以公开(不公开也会被监测到),但是私钥不可以,当然,大名鼎鼎如凯撒密码,你如果直接套用后移3位这一密钥会被瞬间破解,你也通过更改密钥的大小以增加破解难度,但是,值得提醒的是,凯撒密码型加密算法安全度极低,只能骗骗萌新小白。OK,你现在一定在想,我怎么样在凯撒型的基础上再增加难度,保护我的信息?

我们先来了解密码学里最基础最基础的加密手段:

1.1、替换密码:如凯撒密码,就是将明文里的每一个元素/字母,如果是二进制则是0和1(bit)都映射给另外一个元素,这个映射规则或者映射就是密码,如(A->D和3)

维基百科里的表述是:

替换式密码,是密码学中按规律将文字加密的手段。

替换式密码中可以用不同字母数为一单元,例如每一个或两个字母为一单元,然后再作加密。密文接收者解密时需用原加密方式解码才可取得原文本。

由于拼音文字中字的组成为有限的字母,以英语为例只有26个字母,组成可能的单元数较少,因此使用替换式密码相对较为容易,而且亦可使用简单机械进行加密;

相反,非拼音文字如中文则因单元数非常大难以使用一般加密方式,必需建立密码本,然后逐字替换。更何况某些非拼音文字中字字皆由不同大小的字根来组字(如藏文、日文、韩文),较难转换,因此使用替换式密码的示例比较少。

1.2、换位密码:将明文中每一个元素都重新排列,并没有改变明文中的任何信息,只是次序混乱,导致词不达意无法理解。

1和2相比较时,可以发现转位式密码只是改变明文中单元的位置,而单元本身没有转变;相反,替换式密码只是转换单元,但密文中单元的位置没有改变。

1.3、乘积密码(Product Cipher)通过结合两个或更多置换的方式制造比单独的加密方式更安全的密码以抵抗密码分析。乘积密码往往结合的是简单的置换/替换算法。

因为1、2两种加密方方都有其缺陷:替代密码的明文只要内容量较大,就有可能遭到频度分析法的攻击,而置换密码的缺点是明文量不能大,量大则会导致置换方式易被发现。

因此,乘积密码是最优解。在学习乘积密码前,很有必要枚举替换与置换两种密码各一种,帮助大家理解为何乘积密码有很大的优势。

2、古典密码算法

2.1、替换密码

 还是从凯撒密码说起。我们上文阐述了凯撒密码的具体操作,现在我们利用上面提到的密码学名词符号,列出凯撒密码的加密解密公式:

加密::C=E(3,m)=m+3(mode 26) 0<=m<=25;
解密::M=D(3,C)=C-3(mode 26) 0<=C<=25;

上边说过,我们可以通过改变偏移量来实现凯撒密码变式,我们叫它“维吉尼亚密码”。

维吉尼亚密码可以实现每一个元素的偏移量都不同,我们将偏移量计做K,则每个元素都偏移量K1、K2.......Kn构成“K表”,K表可以循环使用,即,例如明文有8个字母,而k表只有7位,则第八个字母需要偏移时,读取K1进行偏移。 我们把这种使用K表进行偏移的凯撒密码变式称为多表替换。

下面的K=(K1、K2........Kn)

 加解密公式稍加更改。

下边是具体构建维吉尼亚密码:【重要!!!!!】

维吉尼亚密码是在凯撒密码基础上产生的一种加密方法,它将凯撒密码的全部25种位移排序为一张表,与原字母序列共同组成26行及26列的字母表。另外,维吉尼亚密码必须有一个密钥,这个密钥由字母组成,最少一个,最多可与明文字母数量相等。维吉尼亚密码加密方法示例如下:

明文:I've got it.
密钥:ok

密文:W'fs qcd wd.

首先,密钥长度需要与明文长度相同,如果少于明文长度,则重复拼接直到相同(也就是上面提到的“k表循环使用”)。本例中,明文长度为8个字母(非字母均被忽略),密钥会被程序补全为“okokokok”。现在根据如下维吉尼亚密码表格进行加密:

明文第一个字母是“I”,密钥第一个字母是“o”,在表格中找到“I”列与“o”行相交点,字母“W”就是密文第一个字母;同理,“v”列与“k”行交点字母是“F”;“e”列与“o”行交点字母是“S”……

维吉尼亚密码只对字母进行加密,不区分大小写,若文本中出现非字母字符会原样保留

如果输入多行文本,每行是单独加密的。

值得注意的是:

维吉尼亚密码的偏移时从0「A」开始的!!!!

2.2换位(置换)密码

我们介绍栅栏密码

加密原理:把要加密的信息交替排成两行,再将下边的行连接到上边行的尾部。

绕晕了?上图吧。

组成栅栏密码的明文一般不超30个字母。

还有行变换密码:

提高安全性的方法:

1、分多行增加加密强度

2、对加密后的密文再进行其他加密操作(乘积)。

是吧,最后都回到了乘积密码。了解完这些,终于可以好好讲分组密码啦,我们下节再聊!

17:27.3.2.22

这篇关于2022-3-2 UOOC 计算机安全导论 一 对称加密方式(置换、替代、多表;维吉尼亚) 【T.O.CTF】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/169601

相关文章

idea设置快捷键风格方式

《idea设置快捷键风格方式》在IntelliJIDEA中设置快捷键风格,打开IDEA,进入设置页面,选择Keymap,从Keymaps下拉列表中选择或复制想要的快捷键风格,点击Apply和OK即可使... 目录idea设www.chinasem.cn置快捷键风格按照以下步骤进行总结idea设置快捷键pyth

Linux镜像文件制作方式

《Linux镜像文件制作方式》本文介绍了Linux镜像文件制作的过程,包括确定磁盘空间布局、制作空白镜像文件、分区与格式化、复制引导分区和其他分区... 目录1.确定磁盘空间布局2.制作空白镜像文件3.分区与格式化1) 分区2) 格式化4.复制引导分区5.复制其它分区1) 挂载2) 复制bootfs分区3)

SpringBoot返回文件让前端下载的几种方式

《SpringBoot返回文件让前端下载的几种方式》文章介绍了开发中文件下载的两种常见解决方案,并详细描述了通过后端进行下载的原理和步骤,包括一次性读取到内存和分块写入响应输出流两种方法,此外,还提供... 目录01 背景02 一次性读取到内存,通过响应输出流输出到前端02 将文件流通过循环写入到响应输出流

java敏感词过滤的实现方式

《java敏感词过滤的实现方式》文章描述了如何搭建敏感词过滤系统来防御用户生成内容中的违规、广告或恶意言论,包括引入依赖、定义敏感词类、非敏感词类、替换词类和工具类等步骤,并指出资源文件应放在src/... 目录1.引入依赖2.定义自定义敏感词类3.定义自定义非敏感类4.定义自定义替换词类5.最后定义工具类

python项目环境切换的几种实现方式

《python项目环境切换的几种实现方式》本文主要介绍了python项目环境切换的几种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 如何在不同python项目中,安装不同的依赖2. 如何切换到不同项目的工作空间3.创建项目

SpringBoot的内嵌和外置tomcat的实现方式

《SpringBoot的内嵌和外置tomcat的实现方式》本文主要介绍了在SpringBoot中定制和修改Servlet容器的配置,包括内嵌式和外置式Servlet容器的配置方法,文中通过示例代码介绍... 目录1.内嵌如何定制和修改Servlet容器的相关配置注册Servlet三大组件Servlet注册详

C# WebAPI的几种返回类型方式

《C#WebAPI的几种返回类型方式》本文主要介绍了C#WebAPI的几种返回类型方式,包括直接返回指定类型、返回IActionResult实例和返回ActionResult,文中通过示例代码介绍的... 目录创建 Controller 和 Model 类在 Action 中返回 指定类型在 Action

SQL 注入攻击(SQL Injection)原理、利用方式与防御策略深度解析

《SQL注入攻击(SQLInjection)原理、利用方式与防御策略深度解析》本文将从SQL注入的基本原理、攻击方式、常见利用手法,到企业级防御方案进行全面讲解,以帮助开发者和安全人员更系统地理解... 目录一、前言二、SQL 注入攻击的基本概念三、SQL 注入常见类型分析1. 基于错误回显的注入(Erro

MySQL基本表查询操作汇总之单表查询+多表操作大全

《MySQL基本表查询操作汇总之单表查询+多表操作大全》本文全面介绍了MySQL单表查询与多表操作的关键技术,包括基本语法、高级查询、表别名使用、多表连接及子查询等,并提供了丰富的实例,感兴趣的朋友跟... 目录一、单表查询整合(一)通用模版展示(二)举例说明(三)注意事项(四)Mapper简单举例简单查询

JAVA SpringBoot集成Jasypt进行加密、解密的详细过程

《JAVASpringBoot集成Jasypt进行加密、解密的详细过程》文章详细介绍了如何在SpringBoot项目中集成Jasypt进行加密和解密,包括Jasypt简介、如何添加依赖、配置加密密钥... 目录Java (SpringBoot) 集成 Jasypt 进行加密、解密 - 详细教程一、Jasyp