def _decrypt(self, joinRN, aes_key, aes_iv): """解密 :param joinRN: :return: """ maxbuf = 8192 a_key = aes_key.encode('iso-8859-15') a_iv = aes_iv.encode('iso-8859-15') crypto = AESCrypto(a_key, a_iv) try: fileObject = open(joinRN, 'rb') fileStr = fileObject.read() fileObject.close() print(fileStr) data_decrypt = crypto.cbc_decrypt(fileStr) fileObject = open(joinRN, 'wb') # fileObject.write(bytes(data_decrypt)) fileObject.write(bytes(data_decrypt, 'utf-8')) fileObject.close() return data_decrypt except PermissionError: print('解密时文件被占用,等待1秒再读取') time.sleep(1) self._decrypt(joinRN, aes_key, aes_iv)
def decrypt(word, key='LXJMTZCVFKQZNQ2J'): try: word = word.encode('utf-8') crypto = AESCrypto(key, key) data = base64.b64decode(word) return crypto.decrypt(data) except Exception as e: print(str(e)) raise PubErrorCustom("请求格式有误!")
def decrypt(self, encryptedData, iv): # base64 decode sessionKey = base64.b64decode(self.sessionKey) encryptedData = base64.b64decode(encryptedData) iv = base64.b64decode(iv) cipher = AESCrypto(sessionKey, iv) decrypted = json.loads(cipher.decrypt(encryptedData)) if decrypted['watermark']['appid'] != self.appId: raise Exception('Invalid Buffer') return decrypted
def decrypt(self, text, appid): """对解密后的明文进行补位删除 @param text: 密文 @return: 删除填充补位后的明文 """ try: cryptor = AESCrypto(self.key, self.key[:16]) # 使用BASE64对密文进行解码,然后AES-CBC解密 plain_text = cryptor.decrypt(base64.b64decode(text)) except Exception as e: # print(e) raise Exception(ierror.WXBizMsgCrypt_DecryptAES_Error) try: plain_text = "<xml>" + plain_text.split("<xml>")[1] xml_content = plain_text.split("</xml>")[0] + '</xml>' from_appid = plain_text.split("</xml>")[1] except Exception as e: raise Exception(ierror.WXBizMsgCrypt_IllegalBuffer) if from_appid != appid: raise Exception(ierror.WXBizMsgCrypt_ValidateAppid_Error) return xml_content
def encrypt(self, text, appid): """对明文进行加密 @param text: 需要加密的明文 @return: 加密得到的字符串 """ # 16位随机字符串添加到明文开头 len_str = struct.pack("I", socket.htonl(len(text.encode()))) text = self.get_random_str() + len_str + text.encode() + appid # 使用自定义的填充方式对明文进行补位填充 pkcs7 = PKCS7Encoder() text = pkcs7.encode(text) # 加密 cryptor = AESCrypto(self.key, self.key[:16]) try: ciphertext = cryptor.encrypt(text, mode='cbc') # 使用BASE64对加密后的字符串进行编码 return ierror.WXBizMsgCrypt_OK, base64.b64encode( ciphertext).decode('utf8') except Exception as e: #print(e) return ierror.WXBizMsgCrypt_EncryptAES_Error, None
def encrypt(word, key='LXJMTZCVFKQZNQ2J'): crypto = AESCrypto(key, key) data = crypto.encrypt(word, mode='cbc') return base64.b64encode(data)
import time
def decrypt(word): word = word.encode('utf-8') crypto = AESCrypto(key, key) data = base64.b64decode(word) return crypto.decrypt(data)
def encrypt(word): crypto = AESCrypto(key, key) data = crypto.encrypt(word, mode='cbc') return base64.b64encode(data)