古典密码2

莫尔斯电码

简述:

摩尔斯电码(Morse Code)是由美国人萨缪尔·摩尔斯在1836年发明的一种时通时断的且通过不同的排列顺序来表达不同英文字母、数字和标点符号的信号代码,摩尔斯电码主要由以下5种它的代码组成:

  1. 点(.)
  2. 划(-)
  3. 每个字符间短的停顿(通常用空格表示停顿)
  4. 每个词之间中等的停顿(通常用 / 划分)
  5. 以及句子之间长的停顿

莫尔斯电码对应表:

A .-B -…C -.-.D -…E .F …-.G –.H ….I J .—
K -.-L .-…M N -.O P .–.Q –.-R .-.S T -
U …-V …-W .–X -…-Y -.–Z –…0 —–1 .—-2 …—3 …–
4 ….-5 ……6 -….7 –…8 —…9 —-.. .-.-.-, –…–? …–…- -….-
= -…-: —…; -.-.-.( -.–.) -.–.-/ -…-..-…-.$ …-…-.—-..-.-…
_ …–.-@ .–.-.! —.! -.-.–+ .-.-.~ .-…# …-.-& . …-…-.

特征:

由 **. - “空格” / **表示。

例:

明文:hello world

密文:… . .-… .-… — .-- — .-. .-… -…

由于BUUCTF上的关于此的题型较为简单,故不做练习。

维吉尼亚密码

替代密码分为单表替换和多表替换两种形式。

单表替换的加密过程只有一张密码表,所有的字符都用同样的密码进行替换。

单表替换(如凯撒加密)简单总结:

    明文和密文一一对应。

    一般有以下两种方式进行破解:

            密钥空间较小的情况下可暴力破解

            在密文足够长的情况下,可使用词频分析法

    当密钥空间足够大,而密文长度足够短的情况下,破解较为困难。

多表替换:

    多表替换的加密过程有n张密码表,每个字符分别用不同的密码表进行替换。

    多表替换的主要优点是解决了单表替换的频率分析问题。

    如在凯撒密码的基础上,后来又发展出一种基于密钥的凯撒密码,其基本原理是利用一个密钥,将密钥的每一位转化为数字(一般为字母表对应顺序的数字),在分别以这一数字为密钥加密明文的每一位字母。

例:

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

密文:W’fs qcd wd.

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

维吉尼亚密码表格

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

  • 维吉尼亚密码只对字母进行加密,不区分大小写,若文本中出现非字母字符会原样保留。
  • 如果输入多行文本,每行是单独加密的。

URL编码

简述:

url编码又叫百分号编码,是统一资源定位(URL)编码方式。URL地址(常说网址)规定了常用地数字,字母可以直接使用,另外一批作为特殊用户字符也可以直接用(/,:@等),剩下的其它所有字符必须通过%xx编码处理。 现在已经成为一种规范了,基本所有程序语言都有这种编码,如js:有encodeURI、encodeURIComponent,PHP有 urlencode、urldecode等。编码方法很简单,在该字节ascii码的的16进制字符前面加%. 如 空格字符,ascii码是32,对应16进制是’20’,那么urlencode编码结果是:%20。

特征:

编码前面都有%

费纳姆密码

费纳姆密码采用二进制表示,加密时要将明文和密钥都转化成7位数的二进制数。

    例:

       明文:HELLO=1001000 1000101 1001100 1001100 1001111

       密钥:CRUDE=1000011 1010010 1010101 1000100 1000101

       异或得到密文:0001011 0010111 0011001 0001000 0001010

解密时将密文7位为一组,然后与密钥异或,在将结果转化为ASCLL即可。

brainfuck编码

简述:

Brainfuck是一种极小化的计算机语言,按照”Turing complete(完整图灵机)”思想设计的语言,它的主要设计思路是:用最小的概念实现一种“简单”的语言。

特征:

BrainFuck 语言只有八种符号,所有的操作都由这八种符号 (> < + - . , [ ]) 的组合来完成。

例:

明文:hello world

:用最小的概念实现一种“简单”的语言。

特征:

BrainFuck 语言只有八种符号,所有的操作都由这八种符号 (> < + - . , [ ]) 的组合来完成。

例:

明文:hello world

密文:+++++ +++++ [->++ +++++ +++<] >++++ .—. +++++ ++…+ ++.<+ +++++ ++[-> ----- —<] >---- ----- ----- -.<++ +++++ ++[-> +++++ ++++< ]>+++ +++.- ----- --.++ +.— —.- ----- --.<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值