1编码

编码

传输前将信息编码,传输后再解码

hex

每个字符的ASCII码的十六进制

字符编码成16进制转10进制
即字符串转十进制

s="flag"
t=s.encode("hex")
print int(t,16)

单字符最快转换用ord

print int("a".encode("hex"),16)
print ord("a")

去掉0x和末尾的L

num=584734024210391580014049650557280915516226103165
print hex(num)[2:-1].decode("hex")

要保证hex编码的字符串是偶数位
奇数位前面补0

def num2str(num):
	tmp=hex(num)[2:].replace("L","")
	if len(tmp) % 2 == 0:
		return tmp.decode("hex")
	else:
		return ("0"+tmp).decode("hex")

字符转长整型

from Crypto.Util.number import long_to_bytes,bytes_to_long
flag="flag{123}"
print bytes_to_long(flag)
print long_to_bytes(bytes_to_long(flag))

urlencode

%后加两个字符 对应着明文的一个字符

import urllib
urllib.quote() //直接对字符串进行url编码
urllib.unquote() //解码
a={'name':'welcome@you','flag':'flag{isxxxx}'}
urllib.urlencode(a) //对字典模式的键值对编码

morsecode

摩斯电码解码在线工具1
2
3
4
使用“.”表示短音,使用“-”表示长音,使用“/”表示分隔

摩斯电码与MISC音频结合起来
Cool Edit

jsfuck

只需要6个字符 ()+[]!

jsfuck在线网站1
2

uuencode

没有小写字母 编码后杂乱无章
uuencode

base家族

base64 a-z,A-Z,0-9,+,/,=
base32 A-Z,2-7,=
base16(hex)0-9,A-F

flag 三种编码
666C6167 16
MZWGCZY= 32
ZmxhZw== 64

base64.b64encode("flag")

转换过程
A S T 一个字符=1byte=8bit
65 83 84 分别对应二进制 共24bit
01000001 01010011 01010100
分成4组,一组6bit 可以表达64个字符 即
010000 010101 001101 010100
转成十进制 即
16 21 13 20
查表 得4个字符
1编码_第1张图片

你可能感兴趣的:(Crypto)