一、进制转换
1.十六进制
1.1 十进制转十六进制
######################十进制转十六进制######################
a = 89
b = hex(a) # hex接纳的类型为整数
print(b) # 0x59
1.2 二进制转十六进制
######################二进制转十六进制######################
a = 0b01011001
b = hex(a) # hex接纳的类型为整数
print(b) # 0x59
1.3 八进制转十六进制
######################八进制转十六进制######################
a = 0o131
b = hex(a) # hex接纳的类型为整数
print(b) # 0x59
1.4 字符串转十六进制
######################字符串转十六进制######################
a = 'IDAT'
b = a.encode().hex()
print(b) # 49444154
二、字节
######################字符串字节######################
a = 'IDAT'
b = a.encode()
print(b) # b'IDAT'
print(b == b'\x49\x44\x41\x54')
######################十进制转字节######################
a = 15
a = str(a)
b = a.encode()
print(b) # b'15'
######################十六进制转字节######################
a = 0xf
a = str(a)
b = a.encode()
print(b) # b'15'
######################八进制转字节######################
a = 0o17
a = str(a)
b = a.encode()
print(b) # b'15'
######################二进制转字节######################
a = 0b1111
a = str(a)
b = a.encode()
print(b) # b'15'
三、碰撞
######################碰撞字典######################
import string
s = string.ascii_letters + string.digits + string.punctuation + string.whitespace
print(s) # "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\t\n\r\x0b\x0c"
s = string.printable
print(s) # "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\t\n\r\x0b\x0c"
# 暴力破解全一点用string.printable就好了
######################碰撞函数######################
import itertools
# repeat为X时就会产生长度为X的字符串,在循环里面,其会一直穷尽s字符串里面的每一个值
for number in itertools.product(s, repeat=6):
# print(number) # ('0', '0', '0', '%', '&', '^')
print(''.join(number)) # 000%&^
# 001ib0
# 001ib1
# 001ib2
# 001ib3
# 001ib4
# 001ib5
# 001ib6
# 001ib7
# 001ib8
# 001ib9
# 001iba
# 001ibb
# 001ibc
# 001ibd
# 001ibe
# 001ibf
# 001ibg
# 001ibh
# 001ibi
# 001ibj
四、编码
1.base64
######################base64编码######################
import base64
def base64decode(s):
decoder = base64.b64decode(s)
return decoder.decode('utf-8')
def base64encode(s):
encoder = base64.b64encode(s.encode("utf-8"))
str_encoder = encoder.decode('utf-8')
return str_encoder
print(base64encode('你好')) # 5L2g5aW9
print(base64decode('5L2g5aW9')) # 你好
五、加密
1.MD5
######################MD5加密######################
import hashlib
def md5_hash(input_string):
md5 = hashlib.md5()
md5.update(input_string.encode('utf-8'))
return md5.hexdigest()
print(md5_hash('123456')) # e10adc3949ba59abbe56e057f20f883e
2.sha256
######################sha256加密######################
import hashlib
def sha256_hash(str):
hash = hashlib.sha256()
hash.update(str.encode("utf-8"))
return hash.hexdigest()
print(sha256_hash('123456')) # 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92
3.sha512
######################sha512加密######################
import hashlib
def sha512_hash(str):
hash = hashlib.sha512()
hash.update(str.encode("utf-8"))
return hash.hexdigest()
print(sha512_hash('123456')) # ba3253876aed6bc22d4a6ff53d8406c6ad864195ed144ab5c87621b6c233b548baeae6956df346ec8c17f5ea10f35ee3cbc514797ed7ddd3145464e2a0bab413