当前位置: 首页 > article >正文

密码学:古典密码.

密码学:古典密码.

古典密码是密码学的一个类型,大部分加密方式是利用替换式密码或移项式密码,有时是两者的混合。古典密码在历史上普遍被使用,但到现代已经渐渐不常用了。一般来说,一种古典密码体制包含一个字母表(如A~Z),以及一个操作规则或一种操作设备。古典密码是一类简单的密码体系,到了现代密码时代几乎不可信赖.


目录:

密码学:古典密码.

古典密码:线性映射.

(1)凯撒密码.

(2)维吉尼亚密码

古典密码:固定替换

(1)培根密码

(2)猪圈密码

古典密码:移位密码

(1)栅栏密码

(2)曲路密码


古典密码:线性映射.

(1)凯撒密码.

在古典密码中,凯撒密码是一种最简单且广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3时,所有字母A将被替换成D、B变成E,以此类推。

下面是凯撒密码的加密和解密的公式,其中 X 为待操作的 文本n 为 密钥 (即偏移量)

◆  En(x)=(x+n) mod26

◆  Dn(x)=(x-n) mod26

即使使用唯密文攻击,凯撒密码也是一种非常容易破解的加密方式。当我们知道(或者猜测》密文中使用了某个简单的替换加密方式,但是不确定是否为凯撒密码时,可以通过使用诸如频率分析或者样式单词分析的方法,就能从分析结果中看出规律,确定使用的是否为凯撒密码。

当我们知道(或者猜测)密文使用了凯撒密码,但是不知道其偏移量时,解决方法更简单。由于使用凯撒密码进行加密的字符一般是字母,因此密码中可能是使用的偏移量也是有限的。例如,使用26个字母的英语,它的偏移量最大是25(偏移量26等同于偏移量0,即没有变换),因此通过穷举法可以轻易地进行破解。


(2)维吉尼亚密码

维吉尼亚密码 (Vigenere Cipher) 是使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的简单形式。在凯撒密码中,字母表中的每个字母都有一定的偏移,如偏移量为3时,A转换为了D,B转换为了E;而维吉尼亚密码由一些偏移量不同的凯撒密码组成。

其加密的过程非常简单,假设明文为: ATTACKATDAWN,密钥为LEMON。首先,循环密钥形成密钥流,使之与明文长度相同:

K= key1 + key2 + key3 + ...

即 LEMONLEMONLE; 然后根据每位秘钥对原文加密,如第1位密钥是L,对应第12个字母,那么偏移量则为12-1=11,对于第1位明文A,加密后的密文应为 (A+11) mod26,即L; 重复这个步骤就可以得到密文LXFOPVEFRNHR。

一般,破解维吉尼亚密码有一些固定的套路: 可以寻找密文中相同的连续字符串,则密钥长度一定为其间隔的因数,或者寻找 “ the ” “ lam ” 之类的特殊单词。当然,现在已经有现成的工具可以使用,遇到维吉尼亚密码可以直接使用在线工具求解:Vigenere


古典密码:固定替换

(1)培根密码

倍根密码(Bacon's Cipher)是由法兰西斯·培根发明的一种隐写术,加密时,明文中的每个字母都会转换成一组5个英文字母.


(2)猪圈密码

猪圈密码(Pigpen Cipher) 是一种以格子为基础的简单替代式密码。猪圈密码的符号与个字母的密码配对.

例如,若对明文“X marks the spot”进行加密.


古典密码:移位密码

(1)栅栏密码

栅栏密码是把要加密的明文分成每 N 个一组,然后把每组的第 1 个字符连起来,形成一段无规律的字符串。在加密时,假设明文为“wearefamily”,密钥为 “ 4 ”,先用密钥 “ 4 ” 将明文每 4 个字符分为组“wear || efam || ily”,然后依次取出每组第1、2、3个字母,组为“wei || efl || aay || rm”,再连接起来就可以得到密文“weieflaayrm“


(2)曲路密码

曲路密码的密钥其实是整个表格的列数和曲路路径,设明文为 “THISISATESTTEXT ”,先将文本填入矩阵.

再按预先约定的路径,从表格中取出字符,即可得到密文:ISTXETTSTHISETA

     

      

      

学习书籍:从0到1:CTFer成长之路..


http://www.kler.cn/a/18468.html

相关文章:

  • 动态规划与贪心算法:核心区别与实例分析
  • 一文了解 Tableau 2024.3 如何展现已发布数据源的数据模型
  • 【Python无敌】在 QGIS 中使用 Python
  • 超详细:三大范式和反范式设计详解
  • LeetCode:703. 数据流中的第 K 大元素
  • JavaScript 正则表达式详解
  • 创新驱动 共建生态|鲲鹏开发者峰会2023·GBASE南大通用技术论坛成功举办
  • Docker run命令
  • WebRTC源码目录结构
  • 欧几里得算法,辗转相除法的证明
  • 思科网络交换机配置命令(详细命令总结归纳)
  • 手把手带你进入爬虫的世界
  • 4种智能指针
  • PMP证书“扫盲”时间2023年考证人快看过来
  • 基于springboot的医院信管系统
  • 备忘录模式
  • 网络路径下倾斜模型生产流程-空三计算,像控刺点
  • vue_组件基础
  • chatgpt的150个指令大全
  • GraphHopper调研笔记
  • Linux | Ubuntu配置JDK源码编译环境
  • canvas的三种渲染模式的区别
  • 点对点通讯的好处和坏处?能否实现及时通讯?
  • 树莓派系统配置-raspi-config
  • [python] Python类型提示指北
  • 多媒体通信有些SCI期刊推荐? - 易智编译EaseEditing