'''''' ''' 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模擬對稱加密算法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.