CTF—CRYPTO(密码学)总结(①)
文章目录
一、分组密码
分组密码是一种对称加密算法,它将明文分成多个等长的分组,使用确定的算法和密钥对每个分组进行加密和解密操作,其中每个明文分组经过加密之后会产生一个等长的密文分组。
数据加密标准(DES,Data Encryption Standard)以及高级加密标准(AES,Advanced Encryption Standard)都属于分组密码。
AES算法:
AES是一种分组密码,用于取代DES的商业应用。其分组长度为128位,密钥长度可以是128位、192位或者256位。AES的计算过程比较复杂,
分组密码有五种工作模式,包括:
-
电码本模式(ECB, Electronic Code Book);
-
密文分组链接模式(CBC, Cipher Block Chaining);
-
密文反馈模式(CFB, Cipher Feedback);
-
输出反馈模式(OFB, Output FeedBack);
-
计数器模式(CTR, Counter);
ECB模式最重要的特征是一段消息中若有几个相同的明文分组,那么密文也将出现几个相同的密文分组,即同样的明文分组将产生同样的密文分组。
二、Base64编码
.判断:
* 字符串只可能包含A-Z,a-z,0-9,+,/,=字符
* 字符串长度是4的倍数
* =只会出现在字符串最后,可能没有或者一个等号或者两个等号
三、凯撒密码
明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,
四、维吉尼亚密码
明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,
假设明文为:HEETIAN
然后选择某一关键词并重复而得到密钥,如关键词为LAB时,密钥为:LABLABL
对于明文的第一个字母H,对应密钥的第一个字母L,于是使用表格中L行字母表进行加密,得到密文第一个字母S。类似地,明文第二个字母为E,在表格中使用对应的A行进行加密,得到密文第二个字母E。以此类推,可以得到:
明文:HEETIAN
密钥:LABLABL
密文:SEFEIBY
五、培根密码
培根密码的本质是将字母用一串二进制数替换,但是表示的过程中,没有采取0和1的形式,而使用a和b来代替。下面是一个常用的培根密码加密表:![请添加图片描述](https://www.icode9.com/i/ll/?i=92e815bdd63a43d397b0d0cb26f4fa42.png)
例:
(1) 加密字符串heetian
(2) 根据加密表转换aabbb aabaa aabaa baabb abaaa aaaaa abbab
(3) 任选一句话,将a当作小写,b当作大写带入
it IS BacOn cipHer’S exAMpLe and now yoU KnOwit.
六、栅栏密码
栅栏密码属于古典密码中最经典的移项式密码
我们以2栏栅栏密码为例来讲解它的加密和解密过程。
加密过程:
明文:THERE_IS_A_CIPHER_
两个一组,得到:(TH) (ER) (E_) (IS) (_A) (_C) (IP) (HE) (R_)
先每组中取出第一个字母:TEEI__IHR
再从每组中取出第二个字母:HR_SACPE_
连在一起得到密文:TEEI__IHRHR_SACPE_
解密过程:
而解密的时候,我们先把密文从中间分开,变为两行:
TEEI__IHR
HR_SACPE_
再按上下上下的顺序组合起来:
THERE_IS_A_CIPHER_
七、周期置换密码
周期置换密码是将明文字符串P按固定的长度m进行分组,然后对每组字符串中的字符按照某个密钥重新排位得到密文C。其中密钥S包含分组长度信息。解密时只需得到密钥S的逆置换,把密文重新分组,按照密钥的逆置换对密文的子字符串重新排位就可以得到明文P。
八、摩尔斯电码
编码主要是由两个字符表示:"."、"-",一长一短,
九、维热纳尔加密算法
原理L:在维热纳尔(Vigenère)的密码中,发件人和收件人必须使用同一个关键词(或者同一文字章节),这个关键词或文字章节中的字母告诉他们怎么样才能前后改变字母的位置来获得该段信息中的每个字母的正确对应位置。比如如果关键字“BIG”被使用了,发件人将把信息按三个字母的顺序排列。第一个三字母单词的第一个字母将应当向后移动一个位置(因为B是排在A后面的字母),第二个字母需要向后移动8位(I是A后面第8个字母),而第三个字母需要向后移动6位(G是A后面第6个字母)
加密的流程:
文字按下面的顺序来进行加密:
明文:THE BUTCHER THE BAKER AND THE CANDLESTICK MAKER。(屠夫、面包师和蜡烛匠)。
关键密钥:BIG BIGBIGB IGB IGBIG BIG BIG BIGBIGBIGBI GBIGB
密文:UPK CCZDPKS BNF JGLMX BVJ UPK DITETKTBODS SBSKS