From 91ef4cecb387074e0fb8d4f86674b1c964c0876a Mon Sep 17 00:00:00 2001 From: Harold <8866033@gmail.com> Date: Mon, 20 Apr 2026 13:06:02 +0800 Subject: [PATCH] =?UTF-8?q?=E9=BB=91=E7=8C=ABAPP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- py/tests/test_黑猫APP.py | 6 ++++++ py/黑猫APP.py | 19 +++++++------------ 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/py/tests/test_黑猫APP.py b/py/tests/test_黑猫APP.py index 1a520c8..9ce30b0 100644 --- a/py/tests/test_黑猫APP.py +++ b/py/tests/test_黑猫APP.py @@ -12,6 +12,12 @@ Spider = MODULE.Spider class TestHeiMaoAppSpider(unittest.TestCase): + def test_module_uses_crypto_aes(self): + source = (ROOT / "黑猫APP.py").read_text(encoding="utf-8") + self.assertIn("from Crypto.Cipher import AES", source) + self.assertIn("from Crypto.Util.Padding import pad, unpad", source) + self.assertNotIn("from cryptography", source) + def setUp(self): Spider._instance = None self.spider = Spider() diff --git a/py/黑猫APP.py b/py/黑猫APP.py index 70bca09..f38d35d 100644 --- a/py/黑猫APP.py +++ b/py/黑猫APP.py @@ -5,8 +5,8 @@ import sys from datetime import datetime from urllib.parse import unquote -from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes -from cryptography.hazmat.primitives.padding import PKCS7 +from Crypto.Cipher import AES +from Crypto.Util.Padding import pad, unpad from base.spider import Spider as BaseSpider @@ -74,19 +74,14 @@ class Spider(BaseSpider): return json.loads(self._aes_decrypt(body["data"])) def _aes_encrypt(self, text): - padder = PKCS7(128).padder() - data = padder.update(str(text).encode("utf-8")) + padder.finalize() - cipher = Cipher(algorithms.AES(self.aes_key.encode("utf-8")), modes.CBC(self.aes_iv.encode("utf-8"))) - encryptor = cipher.encryptor() - return base64.b64encode(encryptor.update(data) + encryptor.finalize()).decode("utf-8") + cipher = AES.new(self.aes_key.encode("utf-8"), AES.MODE_CBC, self.aes_iv.encode("utf-8")) + data = pad(str(text).encode("utf-8"), AES.block_size) + return base64.b64encode(cipher.encrypt(data)).decode("utf-8") def _aes_decrypt(self, text): data = base64.b64decode(str(text or "")) - cipher = Cipher(algorithms.AES(self.aes_key.encode("utf-8")), modes.CBC(self.aes_iv.encode("utf-8"))) - decryptor = cipher.decryptor() - padded = decryptor.update(data) + decryptor.finalize() - unpadder = PKCS7(128).unpadder() - return (unpadder.update(padded) + unpadder.finalize()).decode("utf-8") + cipher = AES.new(self.aes_key.encode("utf-8"), AES.MODE_CBC, self.aes_iv.encode("utf-8")) + return unpad(cipher.decrypt(data), AES.block_size).decode("utf-8") def _replace_code(self, text): replacements = {