莫尔斯电码
简述:
摩尔斯电码(Morse Code)是由美国人萨缪尔·摩尔斯在1836年发明的一种时通时断的且通过不同的排列顺序来表达不同英文字母、数字和标点符号的信号代码,摩尔斯电码主要由以下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
密文:+++++ +++++ [->++ +++++ +++<] >++++ .—. +++++ ++…+ ++.<+ +++++ ++[-> ----- —<] >---- ----- ----- -.<++ +++++ ++[-> +++++ ++++< ]>+++ +++.- ----- --.++ +.— —.- ----- --.<