常用加密算法概述

题外话:最近某人在参加CTF比赛,为了寻找共同话题,并督促很久没动过脑的我学习,也给我讲解了几道题。经过考虑,加密方面的题和我的专业相符些,所以决定先攻破这方面的一些习题,权作打发时间了。在此总结一些作题过程中涉及的算法,加深记忆。

1.base64

概述:把明文对应成64个字符的加密算法。
方法:每个字符对应8位二进制数,因此可把字符转化为二进制数。将每6个二进制数作为一个单位,那么共有64个这样的6位二进制数。设定64个字符与上述二进制数一一对应。如此,在对字符加密时,可先将字符转化为二进制数,再将二进制数对应到64个字符。

注意:字符转化的二进制数的个数一定是8的倍数,但不一定是6的倍数,不方便加密。一种解决方法是,将现有的数字进行补零,凑成6的倍数。但是,若补零后的二进制数的个数不是8的倍数,则在解密时又无法顺利转换为明文字符。因此,在补零时需要使二进制数的个数同时是6和8的倍数。目前,有一种通用的凑整方式:向明文字符中添加特殊的字符“=”(也可转化为8位二进制数)。明文字符转化的二进制数的个数只可能有三种情况:除以6余0,除以6余2,除以6余4。第一种情况无需处理,第二种情况下,在明文字符后加两个“=”,可将转化后的二进制数的个数变为6的倍数。第三种情况下,在明文字符后加一个“=”,可将转化后的二进制数的个数变为6的倍数。

2.Caesar加密

概述:把明文字符依次对应到后n个字符

方法:依次对应即可,如a对应到c,b对应到d,等等。

3.Morse码

概述:把明文字符对应成点和划。

方法:有根据字母形状设计的对应表。

4.幂数加密

概述:以序号代替英文字母,然后将序号表示为2的次方的和,将次方作为明文编码。

方法:如,e对应的序号为5,那么5=2^0+2^2,e对应的编码为02。

5.栅栏加密

概述:把一行明文分成n行,然后按列读取为密文。

方法:尽量把明文分割为长度相等的行,再读取。

注意:其变体是w型栅栏加密。

6.培根密码

概述:通过两种字符表示明文(以A和B为例)

方法:将明文中的每个字母都转换为A和B组成的5个字母。有对应密码表。

7.乱入一个新学到的方法,可以查看字符串的编码:

chardet.detect(s) 

可查看字符串s的编码方式,置信度。

8.RSA加密

RSA公钥文件解密密文的原理分析 - Angel_Kitty - 博客园 (cnblogs.com)

你可能感兴趣的:(理论)