一 移位密码
简单移位密码
一般m表示明文,c表示密文
当密钥K是“3124”,明文m是“flag{easy_easy_crypto}"时
密钥变化规则表如下
明文字符位置 | 1 | 2 | 3 | 4 |
密文字符位置 | 3 | 1 | 2 | 4 |
移位密码首先会以K的长度4切分m具体如下:
flag {eas y_ea sy_c rypt o}
每一部分按照密钥变化表进行变化
lafg ea{s _eya y_sc yprt }o
得到密文:lafgea{s_eyay_scyprt}o
def a(m,k):
l=len(k)
c=""
for i in range(0,len(m),l):
tmp_c=[""]*l
if i+l>len(m):
tmp_m=m[i:]
else:
tmp_m=m[i:i+l]
for kindex in range(len(tmp_m)):
tmp_c[int(k[kindex])-1]=tmp_m[kindex]
c+="".join(tmp_c)
return c
m="flag{easy_easy_crypto}"
k="3124"
print a(m,k)
曲路密码
1.加密解密原理:
按照事先约定的原则把明文填入表中,再按照一定的顺序进行遍历
例如:
明文为HelloWorldab
密文就是lrbaoleWdloH
云影密码
1.加密解密原理:
云影密码仅包含01248五个数字,其中0用于分割,其余数字用于做 加和操作之后转换为明文
将一个数字各位数字加起来之和得到的数字对应的字母就是密文
例如:123=6,即f。
再如:8842101220480224404014224202480122 即:welldone
def c01248_decode(c):
l=c.split("0")
origin="abcdefghijklmnopqrstuvwxyz"
r=""
for i in l:
tmp=0
for num in i:
tmp+=int(num)
r+=origin[tmp-1]
return r
print c01248_decode("8842101220480224404014224202480122")
def c01248_decode(c):
l = c.split("0")
origin = "abcdefghijklmnopqrstuvwxyz"
r = ""
for i in l:
tmp = 0
for num in i:
tmp += int(num)
r += origin[tmp - 1]
return r
print(c01248_decode("8842101220480224404014224202480122"))
栅栏密码(普通型)
1.将明文分为N组,然后把每一组第一个字连起来。
2.在线加密解密网址
栅栏密码(w型)
.加密解密原理:分组时呈W型排列
2.在线加密解密网址:http://www.atoolbox.net/Tool.php?Id=777.com
二 单表替代密码
凯撒密码
ROT13
埃特巴什码
加密和解密
1.使用词频分析:https://quipqiup.com/
2.解密网站:
http://www.practicalcryptography.com/ciphers/classical-era/atbash-cipher/
经典单表替代
培根密码
1.在线工具解密:http://rumkin.com/tools/cipher/baconian.php
猪圈密码(图形替代密码)
例如:
2.在线加密解密网址:http://www.metools.info/code/c90.html
跳舞的小人
仿射密码
1.原理
密钥:(a,b),其中a与26互质。
加密解密过程:
2.在26上所有与26互质元素的乘法逆元:
3.在线加密解密网站:文章来源:https://www.toymoban.com/news/detail-456974.html
http://www.atoolbox.net/Tool.php?Id=911文章来源地址https://www.toymoban.com/news/detail-456974.html
三 多表替代密码
棋盘类密码
维吉尼亚密码
希尔密码
到了这里,关于CTF-Crypto-各种密码原理及解密方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!