Python 模拟 NodeJS的AES加密和解密

您所在的位置:网站首页 社会实践打扫卫生心得体会500字内容 Python 模拟 NodeJS的AES加密和解密

Python 模拟 NodeJS的AES加密和解密

2023-06-04 14:48| 来源: 网络整理| 查看: 265

我需要用Python Requests 来爬取数据,但是数据库请求被加密了,加密模式是“aes-128-ecb”,以下是NodeJS的加密和解密结果:

var key = "1101101101100000" var enc_str = "test_str" var crypto = require("crypto") var cipher = crypto.createCipher("aes-128-ecb", key) var crypted = cipher.update(enc_str, "utf-8", "hex") crypted += cipher.final("hex") console.log(crypted) var d_cipher = crypto.createDecipher("aes-128-ecb", key) decrypted = d_cipher.update(crypted, "hex", "utf-8") decrypted += d_cipher.final("utf-8") console.log(decrypted)

结果:

'0298a0c9502a3277d065032d66ebb8b7' 'test_str'

我尝试用Python 的 Crypto 来模拟加密和解密,然而得到的结果不一样,以下是Python的结果:

"""aes-128-ecb""" from Crypto.Cipher import AES import binascii class Encryptor(object): def __init__(self, key, block_size): self.key = key self.block_size = block_size self.en_code = 'utf-8' self.cipher = AES.new(key.encode(self.en_code), AES.MODE_ECB) def encrypt_str(self, enc_str): padded_data = self.pad(enc_str.encode(self.en_code)) encrypted = self.cipher.encrypt(padded_data) return binascii.b2a_hex(encrypted).decode(self.en_code) def decrypt_str(self, dec_str): decrypted = self.cipher.decrypt(binascii.a2b_hex(dec_str)) return self.unpad(decrypted).decode(self.en_code) def pad(self, pad_str): padding_size = self.block_size - len(pad_str) % self.block_size padded_data = pad_str + padding_size * chr(padding_size).encode(self.en_code) return padded_data def unpad(self, unpad_str): padding_size = unpad_str[-1] return unpad_str[:-padding_size] if __name__ == '__main__': key = '1101101101100000' enc_str = 'test_str' encryptor = Encryptor(key, 16) enc_data = encryptor.encrypt_str(enc_str) print(enc_data) dec_data = encryptor.decrypt_str(enc_data) print(dec_data)

结果:

'48ef7b31d0874147929ae99cd38cf5d0' 'test_str'

想请问如何用 Python 模拟 NodeJS 的加密和解密,得到同样的结果



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3