首页 > 移动平台 > 详细

手机号的 AES/CBC/PKCS7Padding 加解密

时间:2019-03-16 17:46:00      阅读:196      评论:0      收藏:0      [点我收藏+]

前言:接口中上次的手机号码和密码是传入的加密的,模拟自动化的时候也需要先对数据进行加密

代码操作

# 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 加解密

原文:https://www.cnblogs.com/guo2733/p/10543246.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!