密码第三周

第三周

DES

DES算法:对称密码中的分组加密算法(块加密)

密钥总长64位,56位参与运算,其余8位为校验位,不参与运算。

以下是整体的加密过程


子密钥生成:

密钥置换
密钥置换是将原始的56位密钥转换为一个56位的中间值,然后将这个中间值分成左右两个28位的部分。这个过程可以用一个称为“置换选择1(PC-1)”的置换表来完成,它将原始密钥中的每个位按照预定的顺序排列,生成一个56位的中间值。
密钥变换
密钥变换是通过一系列复杂的置换和替换操作,将28位的左右部分分别变换为16个48位的子密钥。密钥变换的具体步骤如下:
将左右部分循环左移,产生16个28位的值。每个值都是上一个值循环左移1或2位得到的,左移的位数由一个称为“移位表(Shift Table)”的表决定。
将每个28位的值按照一个称为“置换选择2(PC-2)”的表,转换为一个48位的子密钥。这个表将28位的值和一个48位的表格中的位置一一对应,产生一个48位的子密钥。
通过这个过程,DES算法可以使用一个相对较短的密钥长度(56位)来生成16个48位的子密钥,每个子密钥都只用于一轮加密。由于子密钥是由原始密钥生成的,因此只有使用相同的密钥才能成功解密密文。这种方式使得DES算法在保证安全性的同时,使用相对较少的密钥长度,提高了加密的效率。

IP置换:

密钥置换:DES每一轮中,从56位密钥产生出不同的48位子密钥,移动后,从56位选择48位

LR分组:明文

E扩展:将32bit的R0扩展为48bit的R0

加粗为扩展位

1 1101 01 0001 01 0011 01 0100 0

异或:将48bit的R0于48bit的K1进行异或

S盒压缩处理(有八个s盒) :大盒子里有8块6bit 的小盒子,刚好容纳48bit的二进制数,盒子的特点是6进4出,出了盒子就变成了32bit的二进制数

解密

from Crypto.Cipher import DES
import base64

key = b'mykey123'  # 密钥,这里使用了一个简单的字符串作为密钥
ciphertext = b'4Xd88R5DLP4='  # 密文,注意要将其解码为二进制格式

key = key[:8]  # 截取前8个字节
cipher = DES.new(key, DES.MODE_ECB)  # 创建密码对象
decoded = base64.b64decode(ciphertext)  # 将密文解码为二进制格式
plaintext = cipher.decrypt(decoded)  # 解密密文

print(plaintext.decode())  # 输出明文

加密

from Crypto.Cipher import DES
import base64

key = b'mykey123'  # 密钥,这里使用了一个简单的字符串作为密钥
plaintext = b'the quick brown fox'  # 明文,注意要将其转换为二进制格式

key = key[:8]  # 截取前8个字节
cipher = DES.new(key, DES.MODE_ECB)  # 创建密码对象
padded_plaintext = plaintext + b'\x00' * (8 - len(plaintext) % 8)  # 对明文进行补全,使其长度为8的倍数
ciphertext = cipher.encrypt(padded_plaintext)  # 加密明文
encoded = base64.b64encode(ciphertext)  # 将密文编码为base64格式

print(encoded.decode())  # 输出加密后的密文

L 0包含初始消息中具有偶数位置的所有位,而R 0包含具有奇数位置的位

ctfshow

crypto14

00110011 00110011 00100000 00110100 00110101 00100000 00110101 00110000 00100000 00110010 01100110 00100000 00110011 00110011 00100000 00110101 00110110 00100000 00110100 01100101 00100000 00110100 00110110 00100000 00110100 00110110 00100000 00110110 01100100 00100000 00110100 01100101 00100000 00110100 00110101 00100000 00110100 00110001 00100000 00110110 01100101 00100000 00110110 01100011 00100000 00110100 00111000 00100000 00110100 00110100 00100000 00110011 00110101 00100000 00110110 00110100 00100000 00110100 00110011 00100000 00110100 01100100 00100000 00110110 01100100 00100000 00110101 00110110 00100000 00110100 00111000 00100000 00110100 00110100 00100000 00110011 00110101 00100000 00110110 00110001 00100000 00110110 00110100 00100000 00110011 00111001 00100000 00110111 00110101 00100000 00110100 00110111 00100000 00110000 01100001

去空格 http://www.esjson.com/delSpace.html

也可以用

str_without_space=str_with_space.replace(" ","")

二进制转字符串 http://xiaoniutxt.com/binaryToString.html

33 45 50 2f 33 56 4e 46 46 6d 4e 45 41 6e 6c 48 44 35 64 43 4d 6d 56 48 44 35 61 64 39 75 47 0a

看起来像是十六进制,转ASCII码 https://coding.tools/cn/hex-to-ascii

3EP/3VNFFmNEAnlHD5dCMmVHD5ad9uG

有数字,大写字母,小写字母,特殊符号,猜测为base64

但是发现普通的base64搞不定

看看对应的码表

可以确定密文的开头是flag,可以对比偏移量

对于普通的base64来说,flag加密为ZmxhZw==,对比在这道题中的3EP/

可以看出3比Z的码值正好多了30,m和E差了30

s = '3EP/3VNFFmNEAnlHD5dCMmVHD5ad9uG'
t = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
l = ""
for i in s:
    l += t[(t.index(i) - 30) % 64]

if len(l) % 4 != 0:
    l = l + "=" * (4 - (len(l) % 4))

print(l)

转为标准的base64

import base64
str2='ZmxhZ3vnnIvmiJHplb/kuI3plb8/fQo='
m = base64.b64decode(str2.encode('utf-8')).decode('utf-8') 
print(m)

Find the table

开控制台审查元素

对应化学元素

flag{doyoulikesnow}

内部赛_密码2

把ctf换成 . 把show换成 -

str="ctfctfshowctf ctfshowctfctf ctfshow showshowctf showshowshowshowshow showshowshowshowshow showshowctfctfctf showctfctfctf showshowctfctfctf ctfctfctfshowshow showctfshowctf showctfctf showctfctfctfctf showshowshowshowshow showctfctf showctfshowctf showshowctfctfctf showshowctfctfctf ctfctfctfshowshow showctfshowctf ctfctfctfctfctf ctfctfshowshowshow ctfctfctfctfshow showctfctf ctfctfctfctfshow ctf showctfctfctf ctfshow showshowshowshowshow showshowshowshowshow showshowctfctfctf showctfctf"
str1=str.replace("ctf",".")
str1=str1.replace("show","-")
print(str1)

摩斯密码翻译器_摩斯密码_摩尔斯电码_摩斯密码解密器 - 查询助手 (00cha.net)

把题目上的直接换解不出来,看了wp发现这里应该将回车换成空格,然后就得到了

flag007B73CD60DC773C524D4EBA007D

HEX转字符 十六进制转字符 hex gb2312 gbk utf8 汉字内码转换 - The X 在线工具 (the-x.cn)

或者上这段网上找的

import re

s = '007B73CD60DC773C524D4EBA007D'

for i in re.findall(r".{4}",s):
    print(chr(int(i,16)),end="")

萌新赛_抱我

cstring = 'abcdefghijklmnopqrstuvwxyz{}_0123456789'
key = 'flag{********}'
length = 300

def encode():
    res = ''
    for i in range(1, length):
        c = random.randint(0, 36)
        res += cstring[c]
        for n in range(10):
            c = random.randint(0, len(key) - 1)
            res += key[c]
    return res

qdfl33{6{6gs3afa6{3}agf{}aagdf}6fl36d{dfl{6ay6gafddfg}{j3f}}6la{3}bfdf3}gla}65}lg6g6dflf0{dfgd3fdfgc{g6a}a3{6}mfa{}f}f}}}3363}}f6a6a7g{a}g66{d3xgfffg}a}3}_{lad}a33ga5fd33}{{dl}{}f{3da}g}3egfal{a3l}3f33}dfdda{3sa{d6g{ff}6vgl33d6g333h{gd{{lg6ldg{ad{3333a6oalf6a{33{de3{fa}ggl{abfd}6}6}}l33fa}f{{3{3fla}a6}af}{amg}{{d}}a6gallfg36{g3dh{{{a{lfg3{sll6g6gfaggid6d{3afl}3rff3gfad3d}1dlllff6}6}h3g66gla336b{6d3gf}f{30d63l}3dfl6a3llfgld3{}qg}gf}dg{6l}3gal}agdl6{lg{g}ddfaaealf{f3llgge3ad3{3adf{c}fllf6f}3at{aag}a66d3}ad{dfg{}dlz6gld}6{3flxgf{3g3ald}3g}g63f6ggf3}gfd}f3ga3efllf6}363fu6366fdlggfx6}6l3}}a{afg{{}}3fdaluaa}al{dg3dpfga}}l}d3l4afg}f{d{lgcfgffglal}dq6l}fgflldavdad6}df{}dw}l6g}}{l3gf6fdaa66aadt}f6lg{dg33h{fa3d{}laao3l6aal{lfdv{3dlf6af36bddg}3ggad3o}{}3g3fgddyffd3lddgdd6{gdfl{{la3ild}dg{g}dgef{a3{d6dfgq3adll{fdadt}66fdflg{3x{l3ll}3{{g4a3af6lag3gdaf66dadg6dfglaf66l3f{2}6{afaf}3l6all}{l}lfdla6{fgff{}g13dl{a{6{l6rd6}}l3dgg3_f{66gll{f6a3d3dga6{lg}{g}d{6{d36lll3dd6{3dg3afal}d}gff26}l}al}}{a6}g66gaaff}0fga{g6dfld{{}fglf{af}iddf6g6}l361{ag}{{dlfak}{d3fa{6{godgg{l36a{gmllgfa3fa{}f}}3{a6{a3{nafg{l3d6}g2lf6{gg}{g}sg{ga{63g{}la6g{g6{{63o6{l}{3}l3ag36{af33g3dw6d33f3lfdan{dddad{{6l6}}fad63lgd1ffaa}g}3flkg3d}aalf3lbgf{g}f}}d3agf{ld{dl3l4fl{{3fla}}r3g}{}gda{}_df3g}fa36gq}la{f{6l}66fgdg}6ag6feaal6all3{d}lfgl}}{{6lal}gf}}gfgd4d{g36daff}l6fd63ag6}f7}l3{{d}{al6lff66gda}f7dfaf6}fd3ldfgfl36gf337a6al663afd{dff}6}df{lt}66}ag6a3{na}3la{6daa}63fgldf3ggcl6dd{3fg{}}gfgaf{633lpfadalldgglg{l}{6}gf{agf6{3l3a366wa6l6}fdla}wfl}33}d{6d6aa}laldag}bgaa3gff}3db{gd}lfga3{}ffddd6}{la4}3{agdg3{}bf33adg3a632d}66f}dgd67}{333dfg}}mgg3all3l}fd6dd3{g}{}}v6}a6f6lgd3nfgg6aff3a}d3da{l3ldldz{}{}g3}6fdg6f{gd{g3adx{gll6{fg3dc63lf}6dl{d63f3g{3adda5f3dgfla3{6}gd{3{d6dlldal6g66}{ddp}lalafd}d{lgl}g6g33agjg}33dgf}lg0adlda6gfdlx{3g}{g3a{a76}gdf3la}lh}l{l{}}a6gm{gdd{agg}6xfgg}{336}d_a{df3}df33jgf}6d3}}f}h3l{6ga6fll2}dd{l36d66}ldafdlga3gbgd}d6df}ff1gf6a{ll3a3w{3g}allfafldal}aal}dlra33l3f}3dff{6{6}f}la}lgf}}}gd{f3z3l3{d3636dpl3fag3{faa1{3ga33l}6ll6{gg6}ddf}t6g}{gl6ggl{d}aafalf{lw6a{dad}}a3x{ada{fg6d}a3g{d{fggdawdfal{{3dlfndl636}36alv633ada6gf6hd{3l66ddlfpglda}{g3fdogdfa3}3g}3k3d3gda33}dvd}laa{fa{a{{}a}36}}}{r6d6{a6}}6{0laa36gd{36kf63a{3}gga4af6}f3gfgf0lf{6g}{{6}pafg6dg}g6{b}3d36ad6d{h6f3agff}63p}{l3ag3}lf1f3dgd{66a37}}}d6gglaftaf3l6a3{{a7{lgd3d}fl6tlfl663lgg3wa}33gl}d{3i6aaagl6{{}n3gd}l3l6}l7a{gf{a}l}f3al{alg63fln{{dd}3l{ll1}{3g}6{6}{u63{f3{g6lgf{3d}{636}{u3}{f6d{{d3lg{3l6aldf{i{f366{f3l{eg{d{gll{3dhgdgfgaf{}}g}{lg3{a{flm}fa3ldf{d32fagllf{{66q363}dl66gg2fa6af6d6g37lffl{d{3lltgl33}}{}d3o{lfld3d{}a6a663a66{fabfd6ld333g3rafa}}fddfgt{ggad3ag}lr63af6lgg}gy{6{{6}6dd626{gl6a{ad3b3df}alf3afdaf66ll}lf6jd}3{6dldfgg}f3lg63l{lr3ff3l{gafaa}f}agl6l33xglfggg{{{fq66}g6lfa3{736lllflalglf}{}gf{aggdg3{a}}da{fp6fglla3l}65gf36{l6dl}g}f{la6{l{fpf{}63{f6gdfaalf6{dffgdgf{lgaf{f{56}g6af63l6a}a}{lfa{3gblda}l}{fl{s{g}}6{g6la56g6g3{f}ddfaa{l}dg6g}0glda6{6d}ff}f{6laadd6zaag{l3l}6dc}f3gg}lffgsag}l3l6d3apd3gd3fd}}aga3ga}a3{6f1f3df{{d}}av3laf}6adf3_d{afa6f}adt{faf{d33aaol3}{l}ld}3yl3a6a{fa6}_d33gf3fll}of{6lad}}fdx}6d{f}ll63ugag66d{6f3}33}al6l{ffwf{}{fl3a36ogg3{}}g6}3hl}6dg6ld{digaa}g}{{l}da{ddg3{{d}w3}ld}adgg3m{lad{gd{a{7afff}{d6}fsf3{f}gflgavfldg6a6{ldqf}fd{f3f3}73ddad{666fz6}d{3{l36a1d6fal3fl6lrl{}aga{fdlsa}{6l6ag3gtgdg{6lgf3f

分析出题脚本,通过 random.randint 函数生成一个范围在 0 到 36 之间的随机整数 c,并将 cstring 中第 c 个字符添加到 res 中。通过一个嵌套的循环,在 res 中添加字符串 key 的字符。

src = 'qdfl33{6{6gs3afa6{3}agf{}aagdf}6fl36d{dfl{6ay6gafddfg}{j3f}}6la{3}bfdf3}gla}65}lg6g6dflf0{dfgd3fdfgc{g6a}a3{6}mfa{}f}f}}}3363}}f6a6a7g{a}g66{d3xgfffg}a}3}_{lad}a33ga5fd33}{{dl}{}f{3da}g}3egfal{a3l}3f33}dfdda{3sa{d6g{ff}6vgl33d6g333h{gd{{lg6ldg{ad{3333a6oalf6a{33{de3{fa}ggl{abfd}6}6}}l33fa}f{{3{3fla}a6}af}{amg}{{d}}a6gallfg36{g3dh{{{a{lfg3{sll6g6gfaggid6d{3afl}3rff3gfad3d}1dlllff6}6}h3g66gla336b{6d3gf}f{30d63l}3dfl6a3llfgld3{}qg}gf}dg{6l}3gal}agdl6{lg{g}ddfaaealf{f3llgge3ad3{3adf{c}fllf6f}3at{aag}a66d3}ad{dfg{}dlz6gld}6{3flxgf{3g3ald}3g}g63f6ggf3}gfd}f3ga3efllf6}363fu6366fdlggfx6}6l3}}a{afg{{}}3fdaluaa}al{dg3dpfga}}l}d3l4afg}f{d{lgcfgffglal}dq6l}fgflldavdad6}df{}dw}l6g}}{l3gf6fdaa66aadt}f6lg{dg33h{fa3d{}laao3l6aal{lfdv{3dlf6af36bddg}3ggad3o}{}3g3fgddyffd3lddgdd6{gdfl{{la3ild}dg{g}dgef{a3{d6dfgq3adll{fdadt}66fdflg{3x{l3ll}3{{g4a3af6lag3gdaf66dadg6dfglaf66l3f{2}6{afaf}3l6all}{l}lfdla6{fgff{}g13dl{a{6{l6rd6}}l3dgg3_f{66gll{f6a3d3dga6{lg}{g}d{6{d36lll3dd6{3dg3afal}d}gff26}l}al}}{a6}g66gaaff}0fga{g6dfld{{}fglf{af}iddf6g6}l361{ag}{{dlfak}{d3fa{6{godgg{l36a{gmllgfa3fa{}f}}3{a6{a3{nafg{l3d6}g2lf6{gg}{g}sg{ga{63g{}la6g{g6{{63o6{l}{3}l3ag36{af33g3dw6d33f3lfdan{dddad{{6l6}}fad63lgd1ffaa}g}3flkg3d}aalf3lbgf{g}f}}d3agf{ld{dl3l4fl{{3fla}}r3g}{}gda{}_df3g}fa36gq}la{f{6l}66fgdg}6ag6feaal6all3{d}lfgl}}{{6lal}gf}}gfgd4d{g36daff}l6fd63ag6}f7}l3{{d}{al6lff66gda}f7dfaf6}fd3ldfgfl36gf337a6al663afd{dff}6}df{lt}66}ag6a3{na}3la{6daa}63fgldf3ggcl6dd{3fg{}}gfgaf{633lpfadalldgglg{l}{6}gf{agf6{3l3a366wa6l6}fdla}wfl}33}d{6d6aa}laldag}bgaa3gff}3db{gd}lfga3{}ffddd6}{la4}3{agdg3{}bf33adg3a632d}66f}dgd67}{333dfg}}mgg3all3l}fd6dd3{g}{}}v6}a6f6lgd3nfgg6aff3a}d3da{l3ldldz{}{}g3}6fdg6f{gd{g3adx{gll6{fg3dc63lf}6dl{d63f3g{3adda5f3dgfla3{6}gd{3{d6dlldal6g66}{ddp}lalafd}d{lgl}g6g33agjg}33dgf}lg0adlda6gfdlx{3g}{g3a{a76}gdf3la}lh}l{l{}}a6gm{gdd{agg}6xfgg}{336}d_a{df3}df33jgf}6d3}}f}h3l{6ga6fll2}dd{l36d66}ldafdlga3gbgd}d6df}ff1gf6a{ll3a3w{3g}allfafldal}aal}dlra33l3f}3dff{6{6}f}la}lgf}}}gd{f3z3l3{d3636dpl3fag3{faa1{3ga33l}6ll6{gg6}ddf}t6g}{gl6ggl{d}aafalf{lw6a{dad}}a3x{ada{fg6d}a3g{d{fggdawdfal{{3dlfndl636}36alv633ada6gf6hd{3l66ddlfpglda}{g3fdogdfa3}3g}3k3d3gda33}dvd}laa{fa{a{{}a}36}}}{r6d6{a6}}6{0laa36gd{36kf63a{3}gga4af6}f3gfgf0lf{6g}{{6}pafg6dg}g6{b}3d36ad6d{h6f3agff}63p}{l3ag3}lf1f3dgd{66a37}}}d6gglaftaf3l6a3{{a7{lgd3d}fl6tlfl663lgg3wa}33gl}d{3i6aaagl6{{}n3gd}l3l6}l7a{gf{a}l}f3al{alg63fln{{dd}3l{ll1}{3g}6{6}{u63{f3{g6lgf{3d}{636}{u3}{f6d{{d3lg{3l6aldf{i{f366{f3l{eg{d{gll{3dhgdgfgaf{}}g}{lg3{a{flm}fa3ldf{d32fagllf{{66q363}dl66gg2fa6af6d6g37lffl{d{3lltgl33}}{}d3o{lfld3d{}a6a663a66{fabfd6ld333g3rafa}}fddfgt{ggad3ag}lr63af6lgg}gy{6{{6}6dd626{gl6a{ad3b3df}alf3afdaf66ll}lf6jd}3{6dldfgg}f3lg63l{lr3ff3l{gafaa}f}agl6l33xglfggg{{{fq66}g6lfa3{736lllflalglf}{}gf{aggdg3{a}}da{fp6fglla3l}65gf36{l6dl}g}f{la6{l{fpf{}63{f6gdfaalf6{dffgdgf{lgaf{f{56}g6af63l6a}a}{lfa{3gblda}l}{fl{s{g}}6{g6la56g6g3{f}ddfaa{l}dg6g}0glda6{6d}ff}f{6laadd6zaag{l3l}6dc}f3gg}lffgsag}l3l6d3apd3gd3fd}}aga3ga}a3{6f1f3df{{d}}av3laf}6adf3_d{afa6f}adt{faf{d33aaol3}{l}ld}3yl3a6a{fa6}_d33gf3fll}of{6lad}}fdx}6d{f}ll63ugag66d{6f3}33}al6l{ffwf{}{fl3a36ogg3{}}g6}3hl}6dg6ld{digaa}g}{{l}da{ddg3{{d}w3}ld}adgg3m{lad{gd{a{7afff}{d6}fsf3{f}gflgavfldg6a6{ldqf}fd{f3f3}73ddad{666fz6}d{3{l36a1d6fal3fl6lrl{}aga{fdlsa}{6l6ag3gtgdg{6lgf3f'
flag_random = ''
for i in range(len(src)):
    if i % 11 != 0:
        flag_random += src[i]

st = set()

for i in range(len(flag_random)):
    st.add(flag_random[i])

for i in st:
    print(i, end='')

也可以词频分析http://www.aihanyu.org/cncorpus/CpsTongji.aspx

bash

埃特巴什密码

埃特巴什密码转换器_Atbash Cipher-ME2在线工具 (metools.info)

This is Sparta

 WFlni~seseds~_lh ~@codyc~_owoot~Bm guf~oev rsTy ec ha!tgufon!oeplwj? t!a{i!Ca gy_@Tba oi}

题目提示,斯巴达密码棒

base47

(lambda a, b: __import__('libnum').n2s(sum([b.index(a[i]) * (len(b) ** (len(a) - i - 1)) for i in range(len(a))])))('E9CV^T+HT5#X36RF4@LAU703+F$E-0N$@68LMXCVDRJJD5@MP#7MUZDTE?WWLG1S#L@+^66H@59KTWYK8TW0RV', '0123456789ABCDEFGHJKLMNPQRSTUVWXYZ?!@#$%^&*-+')

不仅仅是morse

先上摩斯密码

不是单纯的摩斯密码,看新的密文由ab两个字母组成

培根密码

在线工具|培根密码加解密 (bugku.com)

《CTF中那些脑洞大开的编码和加密》

编码

base系列编码

https://www.qtool.net/baseencode

base64
在这里插入图片描述

64个字符(A-Z,a-z,0-9,+,/这64个编码字符,=号不属于编码字符,而是填充字符)

shellcode编码

形如

\x54\x68\x65\x7f\x71\x75\x69\x63\x6b\x7f\x62\x72\x6f\x77\x6e\x7f\x66\x6f\x78\x7f\x6a\x75\x6d\x70\x73\x7f\x6f\x76\x65\x72\x7f\x74\x68\x65\x7f\x6c\x61\x7a\x79\x7f\x64\x6f\x67

Quoted-printable 编码

网络管理员在线工具 - Quoted-Printable (mxcz.net)

=E6=95=8F=E6=8D=B7=E7=9A=84=E6=A3=95=E8=89=B2=E7=8B=90=E7=8B=B8=E8=B7=B3=E8=BF=87=E4=BA=86=E6=87=92=E6=83=B0=E7=9A=84=E7=8B=97

XXencode编码

跟base64打印字符相比,就是UUencode多一个“-” 字符,少一个”/” 字符。

在线XXencode编码|在线XXencode解码|XX编码|XX解码|XXencode编码原理介绍–查错网 (chacuo.net)

UUencode编码

在线UUencode编码|在线UUencode解码|UU编码|UU解码|UUencode编码原理介绍–查错网 (chacuo.net)

密文刚好落在ASCII字符集中可打印字符(32-空白…95-底线)的范围之中。

URL编码(百分号编码)

在该字节ascii码的的16进制字符前面加%

在线URL编码|在线URL解码|URLEncode解码|UrlEncode编码原理|百分号编码–查错网 (chacuo.net)

Unicode编码

Unicode编码有以下四种编码方式:

源文本:The

&#x [Hex]:&0054;&0068;&x0065

&# [Decimal]:&00084;&00104;&00101;

\U [Hex]:\U0054\U0068\U0065

\U+ [Hex]:\U+0054\U+0068\U+0065

网络管理员在线工具 - Unicode (mxcz.net)

Escape/Unescape编码(%u编码)

字符对应UTF-16 16进制表示方式前面加%u

HTML实体编码

HTML ISO-8859-1 参考手册 (w3school.com.cn)

敲击码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q2yUwazv-1678493236663)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20230309163944922.png)]

莫尔斯电码

Morse Code (rumkin.com)

各种文本加密

文本加密为汉字,可自设密码|文本在线加密解密工具 (qqxiuzi.cn)

栅栏密码

Practical Cryptography

曲路密码

事先双方约定密钥(也就是曲路路径)。

列移位密码

行列数相等的填充规则列移位密码加解密http://www.practicalcryptography.com/ciphers/classical-era/columnar-transposition/

由列移位密码变化来的密码也有其他的,比如Amsco密码(Amsco Cipher)和Cadenus密码(Cadenus Cipher)。

埃特巴什码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Eb80uQxp-1678493236664)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20230309165631241.png)]

http://www.practicalcryptography.com/ciphers/classical-era/atbash-cipher/

凯撒密码

from pycipher import Caesar
str1=Caesar(key=1).encipher('The quick brown fox jumps over the lazy dog')
str2=Caesar(key=1).decipher('UIFRVJDLCSPXOGPYKVNQTPWFSUIFMBAZEPH')
print(str1)
print(str2)

Online calculator: Caesar cipher (planetcalc.com)

ROT5/13/18/47

ROT5、ROT13、ROT18、ROT47位移编码 (qqxiuzi.cn)

简单替换密码

破解:密文数据足够多时这种密码我们可以通过字频分析方法破解或其他方法破解

比较好的在线词频分析网站http://quipqiup.com/index.php(翻= =墙),这里推荐一篇通过”爬山算法”来破解简单替换密码文章,基于文中的算法实现的工具来破解示例。

希尔密码

每个字母转换成26进制数字:A=0, B=1, C=2…Z=25一串字母当成n维向量,跟一个n×n的矩阵相乘,再将得出的结果MOD26。

Practical Cryptography

猪圈密码

The Black Chamber - Pigpen Cipher (simonsingh.net)

有四类变种

波利比奥斯方阵密码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-01lmUOLq-1678493236665)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20230309171805589.png)]

夏多密码(曲折加密)

普莱菲尔密码/单方密码(Single Cipher)

横向编制密码表Practical Cryptography

from pycipher import Playfair
str1=Playfair('CULTREABDFGHIKMNOPQSVWXYZ').encipher('THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG')

str2=Playfair('CULTREABDFGHIKMNOPQSVWXYZ').decipher('UKDNLHTGFLWUSEPWHLISNPCGCRGAUBVZAQIV')

print(str1)
print(str2)

维吉尼亚密码

Online calculator: Vigenère cipher (planetcalc.com)

from pycipher import Vigenere
Vigenere('CULTURE').encipher('THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG')

Vigenere('CULTURE').decipher('VBPJOZGMVCHQEJQRUNGGWQPPKNYINUKRXFK')

培根密码

由a,b两字母组成
在线工具|培根密码加解密 (bugku.com)

分组摩斯密码

除了 . - 加入了新的隔断符x
http://www.stormloader.com/

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值