1. 程式人生 > >手機號的 AES/CBC/PKCS7Padding 加解密

手機號的 AES/CBC/PKCS7Padding 加解密

.sh cipher 字節 padding name key inf ret def

前言:接口中上次的手機號碼和密碼是傳入的加密的,模擬自動化的時候也需要先對數據進行加密

代碼操作

# coding=utf-8

import hashlib
from Crypto.Cipher import AES
import base64


class AesCrypter(object):
    def __init__(self):
        self.key = b********
        self.iv = b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0

    def encrypt(self, data):
        data1 
= self.pkcs7padding(data) data = bytes(data1, encoding="utf8") # 傳進來的參數先變成字節 h_key = hashlib.sha256(self.key).digest() cipher = AES.new(h_key, AES.MODE_CBC, self.iv) encrypted = cipher.encrypt(data) return base64.b64encode(encrypted) def decrypt(self, data): data
= base64.b64decode(data) h_key = hashlib.sha256(self.key).digest() cipher = AES.new(h_key, AES.MODE_CBC, self.iv) decrypted = cipher.decrypt(data) decrypted = self.pkcs7unpadding(decrypted) return decrypted def pkcs7padding(self, data): # AES.block_size 16位
bs = AES.block_size padding = bs - len(data) % bs # 16-11%16 padding_text = chr(padding) * padding # chr()返回當前正是對應的ascii碼 return data + padding_text def pkcs7unpadding(self, data): lengt = len(data) unpadding = data[lengt - 1] return data[0:lengt - unpadding] def sha(self, text): # key進行256哈希 sha256 = hashlib.sha256() sha256.update(text.encode(utf-8)) res = sha256.hexdigest() return res if __name__ == __main__: aes = AesCrypter() encrypted = aes.encrypt(39999912332) # 加密 print(encrypted) plain = aes.decrypt(encrypted) # 解密 print(plain)

運行後的結果

技術分享圖片

手機號的 AES/CBC/PKCS7Padding 加解密