Python 模拟 NodeJS的AES加密和解密 |
您所在的位置:网站首页 › 社会实践打扫卫生心得体会500字内容 › Python 模拟 NodeJS的AES加密和解密 |
我需要用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 |