ASCII编码

简述:使用制定的7位或8位二进制数组合来表示128或256种可能的字符。使用7位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0到9、标点符号,以及在美式英语中使用的特殊控制字符。

在线解密&工具:https://www.sojson.com/ascii.html

URL编码

简述:url编码又叫百分号编码,是统一资源定位(URL)编码方式,URL地址(通常说网址)规定了常用地数字,字母可以直接使用,另外一批作为特殊用户字符也可以直接用(/,:@等),剩下的其他所有字符必须通过在该字节ascii码的16进制字符前面加%编码处理。

举例:编码方式很简单,在该字节ASCII码的16进制字符前面加%,如空格字符,ASCII码是32对应的16进制是‘20’,那么urlencode编码结果是:%20。

在线解密&工具:http://www.hiencode.com/url.html

MD5

MD5即信息摘要算法,由16位或者32位数字(0-9)和字母(a-f)所组成的字符串,字母大小写统一;如果出现这个范围以外的字符说明这可能是个错误的md5值,就没必要再拿去解密了。

特征:有固定长度,一般是32位或者16位(16位值取的是8-24位),由数字“0-9”和字母“a-f”组成。

在线解密&工具:https://www.somd5.com/

base16编码

简介:Base16编码就是将ASCII字符集中可打印的字符(数字0-9和字母A-F)对应的二进制字节数据进行编码。

原理:将数据(根据ASCII编码,UTF-8编码等)转化成对应的二进制数,不足8比特位高位补0,然后将所有的二进制全部串起来,4个二进制为一组,转化成对应十进制数。

根据十进制数值找到Base16编码表里对应的字符,Base16是4个比特位表示一个字符,所以原始是1个字节(8个比特位)刚好可以分成两组,也就是说原先如果使用ASCII编码后的一个字符,现在转化成两个字符,数据量是原先的两倍。

特点:由字母A-F,数字0-9共16个字符组成。

在线解密&工具:https://ctf.bugku.com/tool/base16

base32编码

简介:与Base16编码区别的是,Base32使用了ASCII编码中可打印的32个字符(大写字母A-Z和数字2-7)对任意字节数据进行编码。

原理:Base32将串起来的二进制数据按照5个二进制分为一组,由于传输数据的单位是字节(即8个二进制位),所以分割之前的二进制位数是40的倍数(40是5和8的最小公倍数),如果不足40位,则在编码后数据补充“=”,一个“=”相当于一个组(5个二进制位),编码后的数据是原先的5倍。

特点:由字母A-Z,数字2-7共32个字符组成,“=”字符号作为后缀填充。(注:此处的“=”需大于3个)

在线解密&工具:https://ctf.bugku.com/tool/base32

base58编码

简介:Base58编码和Base64一样,Base58编码的作用也是将非可视字符可视化(ASCII化)。

原理:但不同的是Base58编码去掉了几个看起来会产生歧义的字符,如0,O(大写字母o),I(大写的字母i)和l(小写的字母L),和几个影响双击选择的字符,如/,+。结果字符集正好58个字符(包括9个数字,24个大写字母,25个小写字母)。而且因为58不是2的整次幂,所以没有使用类似base64编码中使用直接截取3个字符转4个字符(3*8=4*6,2的6次方刚好64)的方法进行转换,而是采用我们数学上经常使用的进制转换方法—辗转相除法。(本质上Base64编码是64进制,Base58编码是58进制)

在线解密&工具:https://www.lddgo.net/convert/base58

base62编码

简介:Base62编码与Base64编码类似,都用于数据内容编码,但Base62的编码方式比Base64更加紧凑。Base62是用62个可打印字符表示8位二进制数据(含无法显示打印字符)的编码方式。

原理:首先要将编码的数字转换为二进制,根据二进制数据按6位分组,给每6位二进制数转换成对应的base62字符,即可得到base62编码。

特点:由大小写英文字母和数字0-9组成,共62个字符。

在线解密&工具:https://ctf.bugku.com/tool/base62

base64编码

简介:Base64编码使用了ASCII编码中的64个可打印字符(英文大小写、数字0-9、和+、/)将任意字节数据进行编码。

原理:base64编码要求把3个8位字节转化为4个6位字节,之后在6位的前面补两个0,形成8位一个字节的形式,6位2进制能表示的最大数是2的六次方即64.这也是为什么是64个字符(A-Z、a-z、0-9、+、/这64个编码字符,‘=’不属于编码字符,而是填充字符)的原因。

特点:

  • 标准base64只有64个字符(英文大小写、数字0-9、和+、/)以及后缀“=”;
  • base64是把3个字节变成4个可打印字节,所以base64编码后的字符串一定能被4整除;
  • 等号一定用作后缀,且数目一定是0个、1个或2个。

在线解密&工具:https://ctf.bugku.com/tool/base64

Base85编码

简介:base85也称为ASCII85,是Paul E.Rutter为btoa实用程序开发的一种二进制文本编码形式。

原理:Base85是用85个可打印字符表示8位二进制数据(含无法显示打印字符)的编码方式,通过使用五个ASCII字符来表示四个字节的二进制数据(使编码量1/4比原来大,假设每ASCII字符8个比特),它比UUENCODE或Base64更有效,它使用四个字符来表示三个字节数据(1/3的增加,假设每个ASCII字符8个比特)。

特点:Base85可用于在XML文件中储存二进制数据,相比于Base94不带!”#&’\这九个字符,无需转义。奇怪的字符比较多,很难出现等号。

在线解密&工具:https://ctf.bugku.com/tool/base85

Base91编码

简介:basE91是将二进制数据编码为ASCII字符的高级方法,它类似于UUencode或base64,但效率更高。 basE91产生的开销取决于输入数据。 它的数量最多为23%(而base64为33%),范围可以降低到14%,通常发生在0字节块上,这使得basE91对于通过二进制不安全连接(例如电子邮件或终端线)传输较大的文件非常有用。

原理:Base91需要91个字符来表示ASCII编码的二进制数据,从94个可打印ASCII字符中(0x21-0x7E)中,-(0x2D)、\(0x5C)、'(0X27)这三个字符被省略以构建base91。

特征:由91个字符(0-9,a-z,A-Z,!#¥%&()*+,./:;?@[]^_`{|}~”)组成。

在线解密&工具:https://ctf.bugku.com/tool/base91

Base92编码

简介:一种用于将二进制数据转换为可打印字符的编码方式。与其他常见的编码方式(如Base64)相比,Base92编码具有更高的密度,可以在较短的字符串中表示更多的数据。Base92编码使用92个字符(ASCII字符集中除了控制字符和特殊字符外的所有可打印字符)来表示二进制数据。每个字符都对应着一个唯一的数值,从0到91(总共92个)。

编码过程如下:

  1. 将要编码的二进制数据划分为6位一组。
  2. 将每组6位转换为对应的十进制数值(0-63)。
  3. 使用92个字符中对应的字符来表示这个数值。例如,0表示字符”!”,1表示字符”#”,以此类推。
  4. 将转换后的字符拼接起来,即得到Base92编码后的字符串。

解码过程则是编码的逆过程:

  1. 对Base92编码后的字符串进行逐字符的解析。
  2. 将每个字符转换为对应的十进制数值。
  3. 将十进制数值转换为6位的二进制数。
  4. 将所有的二进制数拼接起来,即得到原始的二进制数据。

特点:Base92编码相对于其他编码方式的主要优点在于它的密度更高,生成的编码字符串更短,但缺点是它的实现较为复杂,且并非广泛使用。在实际应用中,使用Base92编码可以有效地减小数据的存储空间或传输负载。

在线解密&工具:https://ctf.bugku.com/tool/base92

Base100编码

简介:就是一堆Emoji表情

在线解密&工具:https://ctf.bugku.com/tool/base100

Shellcode编码

简介:在Shellcode的编码技术中有众多的编码算法,常用的有Base64编码(采用Base64对网页Shellcode进行编码)、alpha_upper编码(编码后的整个Shellcode呈现ASCII可见字符编码)和xor编码(通过异或算法实现编码,编解码过程比较容易实现,编码后的长度增长也比较容易接收),在这三种方法中,后两种都用于二进制Shellcode编码,而且他们的原理也十分类似。

特征:Shellcode编码中含有\x,形如:\x28\x18\xff\xff

在线解密&工具:https://www.toolhelper.cn/EncodeDecode/EncodeDecode

Quoted-printable编码

简介:Quoted-printable编码方法适用于所传送的数据中只有少量的非ASCII码,例如汉字。这种编码方法的要点就是对于可打印的ASCII码,除特殊字符符号等号“=”外,都不改变。等号“=”和不可打印的ASCII码以及非ASCII码的数据的编码方法是:现将每个字节的二进制代码用两个十六进制数字表示,然后在前面加上一个等号“=”。

原理:任何一个8位的字节可编码成为3个字符:一个等号“=”后跟随两个十六进制数(0-9或A-F)表示改字节的数值。

特征:Quoted-printable编码中含有=,形如:=E9=82=A3=E4=BD=A0

在线解密&工具:http://www.metools.info/code/quotedprintable231.html

XXEncode编码

简介:XXEcode编码是一种二进制到文字的编码,它跟UUEcode以及Base64编码方法很类似,它也是定义了可打印字符表示二进制文字的一种方法,不是一种新的编码集合。

原理:XXEnode编码将输入文本以每三个字节为单位进行编码,如果最后剩下的资料少于三个字节,不够的部分用零补齐。三个字节共有24个Bit,以6bit为单位分为4个组,每个组以十进制来表示所出现的字节的数值,这个数值只会落在0到63之间。它64个可打印字符固定字节范围以及顺序,包括大小写字母,数字以及+-字符。

特征:它较于UUEncode编码优点在于它64字符是常见字符,没有任何特殊字符。

在线解密&工具:http://www.hiencode.com/xxencode.html

UUEncode编码

简介:UUEncode编码是一种二进制到文字的编码,它不是MIME编码中一员。最早在unix邮件系统中使用,全称:Unix-to-Unix encoding。它也是定义了用可打印字符表达二进制文字的一种方法,并不是一种新的编码集合。

原理:UUEncode编码将输入文本以每三个字节为单位进行编码,如果最后剩下的资料少于三个字节,不够的部分用零补齐。三个字节共有24个Bit,以6个bit为单位分为4个组,每个组以十进制来表示所出现的字节的数值。这个数值只会落在0-63之间,然后将每个数加上32,所产生的结果刚好落在ASCII字符集中可打印字符的范围中。跟base64编码具有非常多的类似,也做了一些特殊转码说明。

特点:64位,一组6位,它定义64字符,不用写映射表,是通过加32转换到可打印字符范围中,相较于Base64编码更为简单。

在线解密&工具:http://www.hiencode.com/uu.html

Unicode编码

简介:目前的Unicode字符分为17组编排,0x0000至0x10FFFF,每组称为平面,而每平面拥有65536个码位,共1114112个。然而目前只用了少数平面。UCS-4根据最高位为0的最高字节分成27=128个group。每个group再根据次高字节分为256个平面。每个平面根据第三个字节分为256行,每行有256个码位。group 0的平面0被称作BMP。如果UCS-4的前两个字节为全零,那么将UCS-4的BMP去掉前面的两个零字节就得到了UCS-2。每个平面有216=65536个码位。Unicode计划使用了17个平面,一共有17×65536=1114112个码位。 在Unicode 5.0.0版本中,已定义的码位只有238605个,分布在平面0、平面1、平面2、平面14、平面15、平面16。最常用的是0平面,ASCII码在0平面的开始部分。中日韩统一表意文字在 4E00-9FFF之间。

特点:国际标准字符,将全球的各种语言的每个字符定义一个唯一的编码,以满足跨语言、跨平台文本信息的转换,当编码和解码的字符集出现不一致的时候就会出现乱码。

unicode一般有四种表示形式 &#x [Hex]: The &# [Decimal]: The \U [Hex]: \U0054\U0068\U0065 \U+ [Hex]: \U+0054\U+0068\U+0065。

在线解密&工具:https://www.toolhelper.cn/EncodeDecode/UnicodeChineseEncodeDecode

凯撒密码

简介:凯撒密码是最早的代换密码,使用单表代换,实现起来也比较容易,破解起来也不难,是很不安全的密码。凯撒密码是没有密匙的,即使没有密匙也能将它破解出来,因为凯撒移位密码只有25种密匙,最多就是将这25种可能性挨个检测一下可以了,这就是我们所说的暴力破解法。当然,还可以使用频度分析法分析每个字母出现的频率,从而知道凯撒密码的移位数。

原理:通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。

在线解密&工具:https://ctf.bugku.com/tool/caesar

Brainfuck加密

简介:Brainfuck是一种极小化的计算机语言,它是由Urban Müller在1993年创建的。由于fuck在英语中是脏话,这种语言有时被称为brainf*ck或brainf**k,甚至被简称为BF。Ook与Brainfuck类似,也是用替换法。

特征:brainfuck语言用> < + – . , [ ]八种符号来替换C语言的各种语法和命令。

在线解密&工具:https://ctf.bugku.com/tool/brainfuck

Ook加密

简介:Ook!是由David Morgan-Mar创建的一个玩笑深奥的编程语言。它代表一长串琐碎的Brainfuck命令替换中的第一个而不是最后一个。因此,它是TrivialBrainfuckSubstitution编程语言家族的成员。

特征:ook密码中有大量ook,加上一些符号(!?.)。

在线解密&工具:https://ctf.bugku.com/tool/brainfuck

.!?加密

特征:.!?密码中只含有.!?三个不同的语法元素,使用Ook解密即可。

在线解密&工具:https://ctf.bugku.com/tool/brainfuck

社会主义核心价值观编码

特征:由24核心价值观(富强、民主、文明、和谐,自由、平等、公正、法治,爱国、敬业、诚信、友善)组成。

在线解密&工具:https://ctf.bugku.com/tool/cvecode

标准银河字母

简介:标准银河字母出自游戏《指挥官基恩》系列。是系列中使用的书写系统。

仿射加密

简介:仿射密码是一种表单代换密码,明文中所有字母对应成数值,经过加密函数加密成新的数值,再对应到相应的字母,组成密文,密文和明文一样经过解密函数恢复成明文。

在线解密&工具:http://www.hiencode.com/affine.html

栅栏密码

简介:所谓栅栏密码就是要把加密的明文分成N个一组,然后把每组的第一个字连起来,形成一段无规律的话。不过栅栏密码本身就有一个潜规则,就是组成栅栏的字母一般不会太多。

原理:首先把要传递的信息中的字母交替排成上下两行,再将下面一行字母排在上面一行的后边,从而形成一段密码。

在线解密&工具:https://ctf.bugku.com/tool/railfence

HTML实体编码

简介:字符实体通俗讲就是网页文件中复杂的符号代码和一些标点的代码。例如小于号 双引号 “这些符号要在浏览器中显示,在HTML文档中都必需被转化成字符实体。字符实体有三部分:一个和号 (&),一个实体名称及一个分号(;),或者 # 和一个实体编号,以及一个分号。

在线解密&工具:https://www.lddgo.net/convert/htmlencode

键盘布局加密

简介:按照所给字符在键盘上的一定规律,拼凑出来对应的字符。

Escape编码

简介:Escape采用了ISO Latin字符集对指定的字符串进行编码。所有的空格符,标点符号,特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(XX等于该字符在字符集表里面的编码的16进制数字)。

Escpace/Unescpae加密解码/编码解码,又叫%u编码,从以往的经验看编码字符串出现有“u”,它是Unicode编码,而Escape编码采用UTF-16BE模式的unicode实现模式。

Escape编码/加密,就是字符对应UTF-16 16进制表示方式前面加%u。Unescape解码/解密,就是去掉”%u”后,将16进制字符还原后,由utf-16转码到自己目标字符。

在线解密&工具:http://www.esjson.com/escapeEncrypt.html

培根密码

简介:培根密码本质上是将二进制信息通过样式的区别,加在了正常书写之上。培根密码所包含的信息可以和用于承载其的文章完全无关。培根密码实际上就是一种替换密码,根据所给表一一对应转换即可加密解密 。它的特殊之处在于:可以通过不明显的特征来隐藏密码信息,比如大小写、正斜体等,只要两个不同的属性,密码即可隐藏。

特征:仅有字母a,b组成(培根密码中的ab,代表的是数学二进制中的0和1)。

在线解密&工具:https://tool.bugku.com/peigen/

摩斯密码

简介:它发明于1837年,是一种早期的数字化通信形式。摩斯密码也叫摩尔斯电码,是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、标点符号和数字。摩尔斯电码是一种早期的数字化通信形式,但是它不同于现代只使用零和一两种状态的二进制代码,它的代码包括五种:点、划、点和划之间的停顿、每个字符之间短的停顿、每个词之间中等的停顿以及句子之间长的停顿。

特征:主要由“.”和“-”这两个字符组成。

在线解密&工具:https://tool.bugku.com/mosi/

猪圈密码

简介:猪圈密码又叫朱高密码、共济会密码,是一种以格子为基础的简单替代式密码。即使使用符号,也不会影响密码分析,也可以用在其他的替代式的方法。

在线解密&工具:http://www.metools.info/code/c90.html

Rabbit密码

Rabbit密码(Rabbit cipher)是一种对称密钥密码算法,由Cohen和Wood设计于2003年。它被用作eStream密码竞赛的候选算法之一,并最终成为了赢家。

Rabbit密码采用了可变位移(可变拉链结构)和组合函数的设计思路,其中包括位移操作、非线性变换和线性变换等。它具有高度的安全性和良好的性能,适合用于软件和硬件实现。

Rabbit密码的基本结构如下:

  1. 首先,通过运算生成初始状态。
  2. 利用初始状态进行32轮迭代,每轮包括非线性变换和线性变换两个步骤。
  3. 在最后一轮迭代后,输出加密或解密结果。

Rabbit密码的主要特点包括:

  1. 密钥长度和分组长度可以灵活选择,可以是128位、192位或256位。
  2. 速度较快,适合在不同平台上实现。
  3. 提供高度的安全性,在广泛的密码分析中表现出强大的抵抗力。

需要注意的是,密码学算法的使用应遵循相关的安全最佳实践,并根据特定的需求和环境选择适当的算法和配置。

在线解密&工具:https://www.codeeeee.com/encrypt/rabbit.html

埃特巴什码

简介:Atbash密码是一种替换密码,具有特定的密钥,其中字母表中的字母是颠倒的。它也是希伯来文所用的数种密码系统之一。

原理:最后一个字母代表第一个字母,倒数第二个字母代表第二个字母。

在线解密&工具:http://www.hiencode.com/atbash.html

playfair密码

简介:playfair密码是一种使用一个关键词方格来加密字符的加密法,1845年由英国人查尔斯·惠斯通发明。

算法:它依据一个5*5的正方形组成的密码来编写,密码表里排列有25个字母。如果一种语言超过25个,可以去掉使用频率最少的一个。如:法语一般去掉w或k;德语则是把i和j合起来当作一个字母看待。英语中z使用最少,可以去掉。

原理:

  1. 编制密码表,在5*5的密码表中,共有5行5列字母。第一行(或第一行)是密钥,其余按照字母顺序。密钥是一个单词或词组,若有重复字母,可将后面重复的字母去掉。当然也要把使用频率最高的字母去掉。(需要注意:这里字母I和J会被当成一个字母)
  2. 整理明文:将明文每两个字母组成一对。如果成对后有两个字母相同字母紧挨或最后一个字母是单个的,就插入一个字母X或者Q。
  3. 编写密文:若p1,p2在同一行,对应密文c1,c2分别是紧靠p1,p2右端的字母(其中第一列被看作是最后一列的后方);若p1,p2在同一列,对应密文c1,c2分别是紧靠p1,p2下方的字母(其中第一行被看作是最后一行的下方);若p1,p2不在同一行,同一列,则c1,c2是由p1,p2确定的矩阵的其他两角的字母(至于横向替换还是纵向替换要事先约定好,或自行尝试)。

特征:密文的字母数一定是偶数;任意两个同组的字母都不会相同,如果出现这种字符必是乱码和虚码。

在线解密&工具:http://www.atoolbox.net/Tool.php?Id=912

棋盘密码

简介:棋盘密码,即Polybius方表,世界上最早的一种密码产生于公元前两世纪。是由一位希腊人提出的,人们称之为棋盘密码,原因为该密码将26个字母放在5*5的方格里,i,j放在一个格子里,如下图所示:

特征:密文每两个数字被编做一组,所有数字均在1-5之间浮动。这样每个字母就对应了由两个数构成的字符α和β,α是该字母所在行的标号,β是列表号。

在线解密&工具:https://www.qqxiuzi.cn/bianma/qipanmima.php

Nihilist加密法(关键字密码)

简介:Nihilist加密是一种矩阵式替换密码,又叫关键字密码,属于Polybius密码的变形种类,利用密钥构建棋盘矩阵,如果字母是26个字母作为明文信息,构建一个5*5的矩阵,将字母不重复的一次填入矩阵,并且i和j是等价的。

原理:首先选取一个关键词已构成的polybius方格,即在5*5矩阵中填写关键词(去重),然后继续在其中按顺序填写字母表的其余字母;然后选取的明文利用图2-13将其转换为数字(先行后列)。

特征:纯数字,只有1-5,密文长度为偶数。

解密脚本:

# write by 2021/7/6# 关键字密码,一种棋盘密码的变种def create_table(key):    key = key + "abcdefghiklmnopqrstuvwxyz"    table = ""    for i in key.replace("j", "i"):        if i not in table:            table += i    return tabledef encrypt_nihilist(string, key):    ciphertext = ""    table = create_table(key)    for i in string.replace("j", "i").replace(" ", ""):        if i in table:            index = table.index(i)            ciphertext += str(index // 5 + 1) + str(index % 5 + 1) + " "        else:            return -1    return ciphertext.strip()def decrypt_nihilist(string, key):    plaintext = ""    table = create_table(key)    lis = string.split(" ")    try:        for i in lis:            index = (int(i[0]) - 1) * 5 + int(i[1]) - 1            plaintext += table[index]            if table[index] == "i":                plaintext += "(j)"    except:        return -1    return plaintextif __name__ == '__main__':    ciphertext_ = encrypt_nihilist("linux", "linux")    plaintext_ = decrypt_nihilist(ciphertext_, "linux")    print(f"{plaintext_}: {ciphertext_}")

Hill密码(希尔密码)

简介:希尔密码是运用基本矩阵论原理的替换密码,由Lester S.Hill在1929年发明,每个字母当做26个进制数字:A=0,B=1,C=2…一串字母当成n维向量,跟一个n×n的矩阵相乘,再将得出的结果模26(注意:用作加密的矩阵—即密钥,要求必须是可逆的,否则就不可能解码。只有矩阵的行列式和26互质,才是可逆的。)

原理:首先需要定义一个矩阵a(要求该矩阵必须存在逆矩阵)作为加密密钥,接着将需要加密的明文字母转换为其对应字母表数字(1-a,2-b…),再将转换后的明文数字序列按照密钥矩阵的阶数进行分组,最后将每组的数字序列和密钥矩阵进行矩阵的乘法运算,即为密文数字序列。

特征:希尔密码由于采用矩阵运算加密,因此在相同的密文加密时,可能会出现不同的密文,因此可以很好的抵御字母频率攻击法。

在线解密&工具:https://ctf.bugku.com/tool/hill

QWE密码

简介:就是一个很简单的单表替换,该表是由电脑键盘的字母顺序而来。比如“Q”对应“A”,“W”对应“B”。

解密脚本:

# write by 2021/7/23# QWE密码DIC_QWE = "qwertyuiopasdfghjklzxcvbnm"DIC_ABC = "abcdefghijklmnopqrstuvwxyz"def encrypt_qwe(string):    ciphertext = ""    string = string.replace(" ", "")    for i in string:        if i in string:            if i in DIC_ABC:                ciphertext += DIC_QWE[DIC_ABC.index(i)]            else:                return -1    return ciphertextdef decrypt_qwe(string):    plaintext = ""    string = string.replace(" ", "")    for i in string:        if i in string:            if i in DIC_QWE:                plaintext += DIC_ABC[DIC_QWE.index(i)]            else:                return -1    return plaintextif __name__ == '__main__':    ciphertext_ = encrypt_qwe("i love you")    plaintext_ = decrypt_qwe(ciphertext_)    print(f"{plaintext_}: {ciphertext_}")

曲路密码

简介:曲路密码和栅栏密码类似,是一种移位密码,解题的时候将明文填入表中,并按照一定的曲路遍历。

解密脚本:

# write by 2021/8/4# 曲路密码import redef encrypt_bend(string, col, row=10):    ciphertext = ""    temp = []    for i in range(col):        temp.append([])    for index, i in enumerate(string):        temp[index % col].append(i)    re_temp = list(reversed(temp))    for index, i in enumerate(re_temp):        if index % 2 == 0:            i = list(reversed(i))        ciphertext += "".join(i)    return ciphertextdef decrypt_bend(string, col, row=10):    plaintext = ""    length = len(string)    min_row = length // col       # 最小的行数    min_num = col - length % col  # 最小行数的列数    # 分组    temp = []    index = 0    for i in range(col):        if i < min_num:            temp.append(string[index:index+min_row])            index += min_row        else:            temp.append(string[index:index+min_row+1])            index += min_row + 1    print(temp)    # 改回列顺序    for index, i in enumerate(temp):        if index % 2 == 0:            # print(re.findall(".{1}", temp[index]))            temp[index] = "".join(list(reversed(re.findall(".{1}", temp[index]))))    temp.reverse()    for i in range(length):        plaintext += temp[i % col][i // col]    return plaintextif __name__ == '__main__':    col_ = 7    row_ = 5    ciphertext_ = encrypt_bend("i will beat you this day", col_, row_)    plaintext_ = decrypt_bend(ciphertext_, col_, row_)    print(f"{plaintext_} : {ciphertext_}")

云影密码

简介:云影密码仅包含01248五个数字,其中0用于分割,其余数字用于做加和操作之后转换为明文。(关于云影加密的描述网上相关资料较少,这里就用一道例题来解释)

题目:8842101220480224404014224202480122

解析:云影加密中0是间隔符,所以把以0开头的全部分隔开然后再看就会得到8个小块,得到数字:88421 122 48 2244 4 142242 248 122。

通过查阅相关资料,云影加密中的15=1+2+4+8,所以上面的数字也是2的整数次幂,然后把上面的数字相加可以得到八组小于等于26的数,按照字母表顺序,即分别代表八个字母:23-W、5-E、12-L、12-L、4-D、15-O、14-N,5-E,就求得密文为:WELLDONE。

解密脚本:

a="8842101220480224404014224202480122"s=a.split('0')print(s)l=[]for i in s:    sum=0    for j in i:        sum+=eval(j)    l.append(chr(sum+64))print(''.join(l))

盲文

简介:盲文又称点字,国际通用的点字由6个凸起的圆点为基本结构,是专供盲文摸读,书写发文字符号。1829年,法国盲人路易·布莱尔受夜问的启发,创造出了以简单的凸点代替拉丁字母的盲文体系,国际上用他的名字来命名盲文(Braille)。

布莱尔创造的由6个点为基础结构的盲字,在纸面上由的凸起,有的不凸起,形成64种变化,即64种字符,在每个字符(单位称“方”)左右两侧,每列各三个点,从左边自上而下叫做1、2、3点,从走遍自上而下叫做4、5、6点。

分类:数字盲文-每个数字的盲文前面都有各“3456”点符形,是数字,表示后面的读作阿拉伯数字。

英文字母盲文-英语字母盲文a-j都只用了1245点位即上半截,和数字的一样;k-t是a-j下面加上了3号点位。

汉语拼音盲文-声母、韵母(注意:声母g/k/h在韵母i/u/ü时变读为j/q/x,z/c/s/zh/ch/sh/r后面的i省略)、声调。

声母盲文对照表1

声母盲文对照表2

声调盲文对照表

韵母盲文对照表

在线解密&工具:https://symbl.cc/cn/tools/braille/

当铺密码

简介:当铺密码是一种很有意思的密码,专门用来加密数字的,不需要密钥,明文信息包含在加密后的密文中。它通过一个汉字中隐藏的信息—笔画数,来将汉字和数字关联起来,将汉字定义为明文,将数字定义为密文,加密是将数字映射到对应笔画的汉字,解密是将汉字按照笔画映射回数字。

有很多的汉字笔画数是相同的,所以可能会有多个明文(汉字)对应同一个密文(数字),让然这个主要是看汉字笔画映射表的选择,如果映射表只准备了9个汉字,每种笔画有一个汉字对应则是一对一的,否则是一对多的。一对一的话有个缺点就是如果要加密的明文中有重复的数字,比如33,转换为“飞马”比“三三”更难总结出规律,而这种没有密钥的加密方式重要的就是隐藏自己的规律,所以一对多会更难被破译。

原理:根据当前汉字有多少笔画出头,对应的明文就是数字几。

在线解密&工具:https://dsb.ink/ctf/dangpu.html

RSA

简介: 1977年,RSA算法由MIT的罗纳德 · 李维斯特(Ron Rivest)、阿迪 · 萨莫尔(Adi Shamir)和伦纳德 · 阿德曼(Leonard Adleman)共同设计,于1978年正式发布,以他们三人的首字母命名,RSA算法是目前应用最广泛的公钥密码算法。但在这之前所用的对称加密方式只采用一个密钥,知道加密密钥就可以知道解密密钥。但是由于双方需要事先约定加密的规则,就导致没有办法安全地交换密钥,建立安全的传递通道。

但是1976年出现的非对称加密算法的思想就可以解决密钥的交换和存放问题。它使用两个密钥,一个用来加密消息和验证签名,叫公钥,另一个用来解密,叫私钥,加解密双方是不平等的。这种新的构思是由美国计算机科学家Whitfield Diffie和Martin Hellman提出的,被称为Diffie-Hellman密钥交换算法,RSA算法就是受到它的启发产生的,是这种构思的具体实现方式,既可以用来加密,解密,也可以用于密钥交换。

RSA主要使用大整数分解这个数学难题进行设计,巧妙地利用了数论的概念。给了RSA公钥,首先想到的攻击就是分解模数,给了的因子攻击者可以计算得到,从而也可以计算得到解密指数,我们称这种分解模数的方法为针对RSA的暴力攻击。虽然分解算法已经稳步改进,但是在正确使用RSA情况下,当前的技术水平仍远未对RSA的安全性构成威胁。如今,只有短的 RSA 密钥才有可能被强力方式解破。

目前,RSA部署在许多商业系统中。Web服务器和浏览器使用它来保护Web流量,它可以用于保障电子邮件的隐私和真实性,还可以用于保护远程登录会话,同时它也是电子信用卡支付系统的核心。简而言之,RSA常用于需要考虑数字数据安全性的应用中。

算法步骤:

  1. 随机选择两个不相等的质数p,q;
  2. 计算他们的乘积N=p*q;
  3. 计算欧拉函数φ(N)=(p-1)(q-1),N的二进制长度作为密钥的长度;
  4. 随机选择一个加密密钥e,这里1<e<φ(N),gcd(e,φ(N))=1;
  5. 根据以下公式求解得到解密密钥d;
  6. 发布加密密钥:(e,N);
  7. 保密解密密钥:(d,N)。

DSA

简介:DSA是Schnorr和ELGamal签名算法的变种,被美国NIST作为DSS,DSA是基于整数有限域离散对数难题的。简单的说,这是一种更该机的验证方式,用作数字签名,不单单只有公钥、私钥,还有数字签名。私钥加密生成数字签名,公钥验证数据及签名,如果数据和签名不匹配则热为验证失败。数字签名的作用就是校验数据在传输过程中不断被修改,数字签名,是单向加密的升级。

 DSA是基于整数有限域离散对数难题的,其安全性与RSA相比差不多。DSA的一个重要特点是两个素数公开,这样,当使用别人的p和q时,即使不知道私钥,你也能确认它们是否是随机产生的,还是作了手脚。RSA算法却做不到。

算法步骤:

  1. 使用消息摘要算法将发送数据加密生成数字摘要;
  2. 发送方用自己的私钥对摘要再加密,形成数字加密;
  3. 将原文和加密的摘要同时传给对方;
  4. 接受方用发送方的公钥对摘要解密,同时对收到的数据用摘要算法产生同一摘要;
  5. 将解密后的摘要和收到的数据在接收双方重新加密产生的摘要相互对比,如果两者一致,则说明在传送过程中信息没有破坏和篡改。否则,则说明信息已经失去安全性。

serpent加密

简介:serpent算法是是一个非常经典的SPN式分组密码体制,同时它的安全强度非常高,与Rijndael算法一样,Serpent尚未有重大安全漏洞被发现。但与之相比,Serpent的运算速度要比Rijndael慢上不少,这也式它落后的主要原因之一。

原理:Serpent算法有两个版本,区别是使用SBOX不同,Serpent-0使用DES的SBOX,Serpent-1使用新的SBOX。而SBOX是算法的核心,是一种非线性的运算,XOR/乱序/线性变换都是线性运算,本身加密能力弱,主要用于增强雪崩效应。SERPENT使用的SBOX是4bit输入4bit输出的。Serpent算法设计了8个SBOX,加密时0轮用sbox0,1轮用sbox1,……,7轮用sbox7,然后8轮用sbox0,……,15轮用sbox7,依次类推。128bit的输入拆分成32份,依次进入sbox输出4x32bit的数据。128bit数据拆分成32个4bit数据,并行进行SBOX运算的话,速度会大大受影响。硬件实现时候,为了提速,可以将每个SBOX实例化32个实例,然后一个单位时间就可以完成原来32个时间的工作量。解密时,SBOX使用的顺序与加密相反,7 6 5 4 3 2 1 0 7 6…… 子密钥使用的顺序相反,线性变换与加密时互为反函数。

在线解密&工具:http://tool.chacuo.net/cryptserpent

AES

简介:AES密码学中的高级加密标准,又称Rijindael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来代替原先的DES,已经被多方分析且广为全世界所使用。

AES为分组密码,把明文分成一组一组的,每组长度相等,每次加密一组数据,知道加密完整个明文。在AES标准规范中,分组长度只能事故128位,也就是说,每个分组为16个字节。密钥的长度可以使用128位,192位或256位。密钥的长度不同,推荐加密轮数也不同。

算法步骤:字节代替、行移位、列混淆、轮密钥加。

aaencode编码

简介:aaencode编码即颜文字编码,通过把js代码转换成颜文字的方式来编码。

在线解密&工具:http://www.atoolbox.net/Tool.php?Id=703

jjencode编码

简介:jjencode是一种将js代码转化为只包含字母、数字和部分特殊字符的形式的混淆方法。jjencode会将每个js语句转化为一个字符串,然后使用特殊的转义字符将这些字符串拼接起来。

在线解密&工具:https://www.toolkk.com/tools/jjencode-encode-decode

jother编码

简介:jother编码是在js代码中,利用少量特定字符构造精简的匿名函数对与字符串的编码方式。其中少量特定字符包括:“+”、“!”、“(”、“)”、“[”、“]”、“{”、“}”,由此可见,递归在编码过程中是必须的,编码压缩率大于100%或者更高,也就是说编码后的长度比原长度长很多。

在线解密&工具:https://vulsee.com/tools/jother/index.htm

JSfuck加密

简介:jsfuck源于一门编程语言brainfuck,其主要的思想就是只用8种特定的符号来编写代码。而jsfuck也是沿用了这个思想,它仅仅使用6种符号来编写代码,即“(”、“)”、“+”、“[”、“]”、“!”。

在线解密&工具:http://www.hiencode.com/jsfuck.html

敲击码

简介:敲击码是一种非常简单的方式对文本信息进行编码的方法,因改编码对信息通过使用一系列的点击声音来编码命名,敲击码是基于5×5方格波利比奥斯方阵来实现的,不同点是用k字母被整合到C中。

在线解密&工具:http://www.hiencode.com/tapcode.html

ROT加密

简介:rot密码可以看作是凯撒密码的一种变式,本质都是移位运算。可大致分为以下几类:

rot5:只将字符串的数字进行加密,步数为5,同时在0-9十个数字进行循环,如1在rot5加密后为6,而6在rot5加密后为1。

rot13:只将字符串中的字母进行加密,步数为13,加密方式上最接近凯撒密码,分别在A-Z或a-z之间循环,如A在rot13加密后为N,Z在rot加密后为M。

在线解密&工具:http://www.hiencode.com/rot13.html

rot18:字面意思(5+13=18)即将上述两种加密方式结合,分别对数字和字母进行相应的操作。

rot47:由于无论是rot5、rot13或rot18都只能对数字和字母进行相应的加密,而对“@!#¥%&”之类的符号却缺少加密,因此在此基础上引入ASCII码,所以rot47只是将步数改为47。对于数字、字母、常用符号进行编码,按照它们的ASCII值进行位置替换,用当前字符ASCII值往前数的第47位对应字符替换当前字符,例如当前为小写字母z,编码后就变成大写字母K,当前为数字0,编码后变成符号“_”。

在线解密&工具:https://www.qqxiuzi.cn/bianma/ROT5-13-18-47.php

与佛论禅

简介:与佛论禅加密其密文特点就是与佛文有关。

在线解密&工具:http://hi.pcmoe.net/Buddha.html

与熊论道

简介:与熊论道加密其密文特点都是以“熊曰:”开头。

在线解密&工具:http://hi.pcmoe.net/index.html

兽音

简介:兽音其密文特点就是动物发出的叫声“呜”、“啊”、“ 嗷”以及符号“~”组成。

在线解密&工具:http://hi.pcmoe.net/roar.html

元音密码

简介:元音密码是一种利用音标中的元音进行加密的密码,编写简便,非常实用。它是根据事先编制好的密码表来对信息进行加密的。

原理:密码表的编写方法是,先写下26个字母,在每个元音字母下标上标上数字。如A=1,E=2,I=3,O=4,U=4,然后根据每个元音右边的辅音次序,将每个辅音下标上相应的数字。如B位位于元音A右边第一的位置,所以它用数字11代替(意思是第一个元音右边的第一个字母);Y位于元音U右边第四的位置,因而代替它的数字是54。

解密脚本:

def vowel_en(s, mode=0, sign="."):"""元音密码 加密"""if mode != 0 and mode != 1:print("仅有模式0和1")returns = s.upper()codes = [{'A': '10', 'B': '11', 'C': '12', 'D': '13', 'E': '20', 'F': '21', 'G': '22', 'H': '23', 'I': '30', 'J': '31', 'K': '32', 'L': '33', 'M': '34', 'N': '35', 'O': '40', 'P': '41', 'Q': '42', 'R': '43', 'S': '44', 'T': '45', 'U': '50', 'V': '51', 'W': '52', 'X': '53', 'Y': '54', 'Z': '55'},{'A': '1', 'B': '11', 'C': '12', 'D': '13', 'E': '2', 'F': '21', 'G': '22', 'H': '23', 'I': '3', 'J': '31', 'K': '32', 'L': '33', 'M': '34', 'N': '35', 'O': '4', 'P': '41', 'Q': '42', 'R': '43', 'S': '44', 'T': '45', 'U': '5', 'V': '51', 'W': '52', 'X': '53', 'Y': '54', 'Z': '55'}]ret = []err = Falsefor i in s:if i in codes[0]:ret.append(codes[mode][i])else:err = Trueret.append(i)if mode == 0:ret = "".join(ret)else:ret = sign.join(ret)print(ret)if err:print("有错误!")return ret

圣堂武士密码

简介:圣堂武士密码(猪圈密码的变种)是基于他们的旗帜上有个红十字,它由四个箭头形状组成,圣堂武士用三角形和圆点组合了25个符号,指向十字键头的四个方向字母表中除了J之外的每个字母都用一种容易记住的模式替换了其中一个符号。

波利比奥斯方阵密码

简介:波利比奥斯方阵密码是棋盘密码的一种,是利用波利比奥斯方阵进行加密的密码方式,简单来说就是把字母排好了,用坐标(行列)的形式表现出来。字母是密文,明文便是字母对应的坐标。

原理:它是一个6行6列的矩阵,第一行为数字1~5,第一列也为数字1~5,表里是26个字母,除了I与J以外,每个字母都各占据一个格子,也就是每个字母都有它们的数字表示,类似于坐标。

它们的坐标读取并不是我们习惯的行列读取,而是与之列行读取。比如字母“B”,用数字表示它就是“12”,而不是“21”。比如要表达单词“HELP”,则写成密码就是23 15 31 35。

在线解密&工具:http://www.atoolbox.net/Tool.php?Id=913

博福特密码

简介:博福特密码是一种类似于维吉尼亚密码的代换密码,由弗朗西斯·蒲福发明。它最知名的应用是Hagelin M-209密码机。博福特密码属于对等加密,即加密演算法与解密演算法相同。

原理:是按照mod q减法运算的一种周期性代替密码,即ci+td=δi(mi+td)≡(ki-mi+td)(mod q),所以,它和维吉尼亚密码类似,以ki为密钥的代替表是密文字母表为英文字母表逆序排列进行循环右移ki+1次形成的,例如,若ki=3(相当于字母D)。

在线解密&工具:https://wtool.com.cn/beaufort.html

滚动密钥密码

简介:滚动密钥密码和维吉尼亚密码有着相同的加密机制,区别是密钥的选取,维吉尼亚使用的密钥简短,而且重复循环使用,与之相反,滚动密钥密码使用很长的密钥,比如引用一本书作为密钥。这样做的目的是不重复循环使用密钥,使密文更难破译,尽管如此,滚动密钥密码还是可以被攻破,因为有关于密钥和明文的统计分析模式可供利用,如果滚动密钥密码使用统计上的随机密钥来源,那么理论上是不可破译的,因为任何可能都可以成为密钥,并且所有的可能性都是相等的。

在线解密&工具:http://www.hiencode.com/runkey.html#:~:text=CTF%E5%9C%A8%E7%BA%BF%E5%B7%A5%E5%85%B7-%E5%9C%A8%E7%BA%BF%E6%BB%9A%E5%8A%A8%E5%AF%86%E9%92%A5%E5%8A%A0%E5%AF%86%7C%E5%9C%A8%E7%BA%BF%E6%BB%9A%E5%8A%A8%E5%AF%86%E9%92%A5%E8%A7%A3%E5%AF%86%7C%E6%BB%9A%E5%8A%A8%E5%AF%86%E9%92%A5%E5%AF%86%E7%A0%81%E7%AE%97%E6%B3%95%7CRunning,Key%20Cipher

同音替换密码

简介:同音替换密码是单字母可以被其他几种密文字母同时替换的密码,通常要比标准替换密码破解更加困难,破解标准替换密码最简单的方法就是分析字母出现频率,通常在英语中字母’E'(或’T’)出现的频率是最高的,如果我们允许字母’E’可以同时被3种不同字符代替,那么就不能还是以普通字母的频率来分析破解,如果允许可代替字符越多,那么密文就会更难破译。

在线解密&工具:http://www.atoolbox.net/Tool.php?Id=919

ADFGX密码

简介:ADFGX密码是结合改良过的Polybius方格替代密码与单行换位密码的矩阵加密密码,使用了5个合理的密文字母:A、D、F、G、X这些字母之所以这样选择是因为当转译成摩尔斯电码不易混淆,目的是尽可能减少转译过程的操作错误。

在线解密&工具:http://www.atoolbox.net/Tool.php?Id=918

ADFGVX密码

简介:ADFGVX密码实际上就是ADFGX密码的扩充升级版,一样具有ADFGX密码相同的特点,加密过程也类似,不同的是密文字母增加了V,使得可以再使用10数字来替换明文。

在线解密&工具:http://www.atoolbox.net/Tool.php?Id=917

双密码

简介:双密码结合了波利比奥斯方阵换位密码,并采用分级实现扩散,这里的“双”是指用两个密钥进行加密,双密码是由法国Felix Delastelle发明。

在线解密&工具:http://www.hiencode.com/bifid.html

三分密码

简介:它是由法国Felix Delastelle发明的,三分密码就是用3×3×3的矩阵加密的,它是第一个应用的三字母替换密码。

原理:首先随意制造三个3×3的Polybius方格替代密码,包括26个英文字母和一个符号,并写出要加密的讯息的三维坐标。然后选择一个英文单词当作密钥,把重复字母去掉后填入方格中,再把剩下的字母按a-z顺序填入,最后填入符号。讯息和坐标四个一列排在一起,再顺序取横行的数字,三个一组分开,将这三个数字当成坐标,找出对应的字母,便得到密文。

四方密码

简介:四方密码是一种对称式加密法,由法国Felix Delastelle发明。这种方法将字母两个一组,然后采用多字母替换密码。

原理:四方密码用4个5×5的矩阵来加密。每个矩阵都有25个字母(通常会取消Q或将I,J视作同一样,或改进为6×6的矩阵,加入10个数字)。首先选择两个英文字作密匙,例如example和keyword。对于每一个密匙,将重复出现的字母去除,即example要转成exampl,然后将每个字母顺序放入矩阵,再将余下的字母顺序放入矩阵,便得出加密矩阵。

在线解密&工具:http://www.metools.info/code/four-square244.html

Bazeries密码

简介:Bazeries密码是换位密码和替换密码的组合,使用两个波利比奥斯方阵,一个明文字母方阵,使用一个随机的数字(一般小于1000000)的生成一个密钥矩阵同时作为第一轮明文划分分组,比如2333这个数字翻译为英文便是TWO THOUSAND THREE HUNDRED THIRTY THREE,从第一个字母T开始选取不重复的字母,之后再从字母表中按序选取没有出现的字母组成密钥矩阵。

Digrafid密码

简介:Digrafid密码使用两个密钥生成分别生成类似波利比奥斯方阵的3×9方格的密表。

格朗普雷密码

简介:格朗普雷密码是替换密码的一种,一般使用8个8字母的单词横向填充8×8方阵,且第一列为一个单词,并且在方阵中26个字母都必须出现一次以上。

举例:

说明:明文中的字母在密阵位置可能不止一个,所以加密结果可能有多种,但是不影响解密。密阵还有6×6、7×7、9×9、10×10、几种。显然密阵越大每个字母被替换的情况就可能越多,那么加密效果就更好。

比尔密码

简介:比尔密码是在1885年出版的一本小册子中提到的三份密码。比尔密码的三份密码都由1-4位的数字组成。第一份密码说明了财宝的位置,第二份密码则说明了财宝的内容,第三份密码则列出了财宝所有者的姓名。

夏多密码

简介:作者麦克斯韦·格兰特在中篇小说《死亡之链》塑造夏多这一英雄人物中所自创的密码。整个夏多密码由两部分组成:

码表

旋转方向

狄德拉密码

外星人密码

克林贡语密码

多斯拉克语

模拟语

海利亚语

樊凡语

跳舞的小人

神奇宝贝密码

音符加密

海军手旗旗语

六十甲子

国际船用信号旗密码

Covenant字体

费兹象形文字

提瓦特文

OPT加密

简介:是一种加密算法,它使用一个随机且只能使用一次的密钥来加密数据,从而实现了非常高的加密安全性。

OPT算法的核心在于“一次性”密钥以及其与待加密数据长度相同。这意味着每个密钥都是随机生成的、不可重复的,并且只能用于加密一次,可以有效避免密钥被破解的风险。同时,由于密钥和待加密数据长度相同,OPT算法具有非常高的安全性和保密性,即使攻击者拥有密文和一部分密钥信息,也很难破解出原始的明文数据。

加密流程:

  1. 生成密钥:随机生成一个与待加密数据长度相同的密钥,密钥中的每个字符都是随机的、不重复的,并且只能使用一次;
  2. 加密数据:将待加密数据和密钥逐个字符进行异或操作,得到加密后的数据;
  3. 传输数据:将加密后的数据发送给接收方,并将密钥以某种方式(如加密、物理交付等)安全地传输给对方;
  4. 解密数据:接收方使用接收到的密文和共享的密钥进行异或操作,得到原始的明文数据。

需要注意的是,由于一次性密钥和待加密数据长度相同,因此在实际应用中,使用OPT算法加密大量数据时需要传输更多的密钥信息,增加了通信开销;同时,密钥必须是真正的随机数,否则可能会被攻击者推算出来,影响加密的安全性。此外,OPT算法还存在一些特殊情况和攻击手段,如密钥重用、密钥泄露等等,需要进行额外的安全防范措施。

博多密码

简介:博多密码,也叫巴拿马密码,是一种古典密码学中的替换密码。它采用了多个字母表,并通过一个基准词来确定加密和解密使用的具体字母表。

原理:将基准词中出现的所有字母按照顺序排列并去除重复字母,得到字母表A;然后将剩余的字母按照字母表顺序排列并去除重复字母,得到字母表B,字母表A和B都包含26个字母;接下来,将明文中的每个字母在字母表A中的位置作为行数,将该字母在字母表B中的位置作为列数,找到对应的密文字母。同理,将密文中的每个字母在字母表B中的位置作为行数,在字母表A中的位置作为列数,找到对应的明文字母。

博多密码的优点是具有较好的安全性,但缺点也很明显,即容易受到频率分析攻击等各种攻击手段的攻击。因此,它已经被更安全的加密算法所取代。

在线解密&工具:https://www.boxentriq.com/code-breaking/baudot-code

费娜姆密码

简介:费纳姆密码其实是一种由二进制产生的替换密码。费纳姆密码是基于模运算和简单的数学运算,用于将明文转换为密文,并将其传输到接收方,然后接收方使用同样的数学运算和模运算来解密该信息。 加密过程通常涉及一系列模运算、移位操作和加法操作。费纳姆密码可以通过增加运算的复杂性和混合复杂的运算与顺序来提高安全性。

加密流程:

  1. 明文根据key转化为数字;
  2. 数字和明(密)文进行XOR运算;
  3. 数字按组转化为密文。

需要注意key一般直接使用ascii二进制和英文对照表。

费娜姆对照表1

费娜姆对照表2

变异凯撒

Type7混淆加密

简介:Type 7 是一种 Cisco 设备密码加密算法,用于将明文密码加密为不可逆的形式。这种加密算法采用了 XOR 和 MD5 哈希的混合方式,使用一个给定的密钥和额外的固定字符串来生成加密后的密码,因此也被称为 Type 7 混淆加密。

原理:从一个有26个ASCII字符表中,产生一个种子值(Seed Value)(0-52之间)随机抽取一个用来和明文密码的第一个字符异或,产生的结果用16进制表示,放在加密后字符串的第2、3位,然后种子值+1,再去抽取一个用来和明文密码第二个字符异或,16进制结果放在随后的位置位……。

在线解密&工具:http://www.atoolbox.net/Tool.php?Id=992&ac=csdn

其他的解密工具以及脚本后续整理好后再分享给大家……