'''''' ''' url 的加密和解密 ''' from urllib import parse s='加密字符' s1=parse.quote(s) print(s1) #%E5%8A%A0%E5%AF%86%E5%AD%97%E7%AC%A6 s2=parse.unquote(s) print(s2) #加密字符 ''' base64: 这个是网络上最常见的用于传输字节码的方式之一 这是一个基于64个可打印字符来表示二进制的方法,用于在http环境下传递数据 输入 A-Z a-z 0-9 和 “+” 、“/” 很多时候字符串尾部为 1个或者两个 = ''' import base64 s='加密字符' #加密 s3=base64.b64encode(s.encode()) print(s3) #b'5Yqg5a+G5a2X56ym' #解密 s4=base64.b64decode(s3).decode() print(s4) #加密字符 'md5 加密' import hashlib s='加密字符' m=hashlib.md5() m.update(s.encode()) s5=m.hexdigest() print(s5) '229c1f7f0a857e81810648bf9cde948c' #看到一串由16进制组成的32位字符,就有很大几率是一个md5加密的了 ''' 现在大多数用的都是3DES加密 DES 和 3DES 都是对称加密,可以转过去也可以转过来 不管是DES 加密还是 3DES加密都需要抓两个东西才能解密(key 和 盐) 如果遇到DES和3DES 加密的数据的解密思路: 首先确定加密方法是什么 然后找到这个算法需要的key 出现在哪个页面,去请求获取 ''' # # DES 加密 from Crypto.Cipher import DES from Crypto.Util import Counter from Crypto import Random import binascii key = '-8B key-' # 长度为8 msg = 'We are no longer the knights who say ni!' nonce = Random.new().read(int(DES.block_size/2)) def des_encrypt(key, msg): ctr = Counter.new(int(DES.block_size*8/2), prefix=nonce) cipher = DES.new(key, DES.MODE_CTR, counter=ctr) msg = nonce + cipher.encrypt(msg) msg = binascii.b2a_hex(msg) return msg.decode() print(des_encrypt(key.encode(), msg.encode())) # 3DES 加密 from Crypto.Cipher import DES3 from Crypto import Random import binascii key = 'Sixteen byte key' msg = 'sona si latine loqueris ' iv = Random.new().read(DES3.block_size) # print(iv) def des3_encrypt(key, msg): cipher = DES3.new(key, DES3.MODE_OFB, iv) msg = iv + cipher.encrypt(msg) msg = binascii.b2a_hex(msg) return msg.decode() s = des3_encrypt(key.encode(), msg.encode()) print(s)
python模拟对称加密算法
猜你喜欢
转载自blog.csdn.net/u012593871/article/details/79345848
今日推荐
周排行