123456789101112131415161718192021222324 |
- # -*- coding: utf-8 -*-
- from __future__ import absolute_import, unicode_literals
- from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
- from cryptography.hazmat.backends import default_backend
- class WeChatCipher(object):
- def __init__(self, key, iv=None):
- iv = iv or key[:16]
- backend = default_backend()
- self.cipher = Cipher(
- algorithms.AES(key),
- modes.CBC(iv),
- backend=backend
- )
- def encrypt(self, plaintext):
- encryptor = self.cipher.encryptor()
- return encryptor.update(plaintext) + encryptor.finalize()
- def decrypt(self, ciphertext):
- decryptor = self.cipher.decryptor()
- return decryptor.update(ciphertext) + decryptor.finalize()
|