Python ECB模式下的三重DES加密

2024-06-17 09:39:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试向SOAP api发送加密的纯文本以获得响应

API将实际文本和加密文本作为输入。下面是我的代码,它确实返回一个加密文本,但是它与在线工具的o/p不匹配:https://www.devglan.com/online-tools/triple-des-encrypt-decrypt 如果我使用在线工具中的O/p,API请求就可以工作,但是如果我使用python代码中的文本,API请求就不能工作

from Crypto.Cipher import DES3
from Crypto import Random
from base64 import b64encode, b64decode


key = 'GHYZXFZH2A4B6N6P7R9SPNMT'
cipher_encrypt = DES3.new(key, DES3.MODE_ECB)
plaintext = 'hellomyf'
encrypted_text = cipher_encrypt.encrypt(plaintext)

ct = b64encode(encrypted_text).decode('utf-8')
print(ct)

byte_string = b64decode(ct)
pt = cipher_encrypt.decrypt(byte_string)
o/p from script
jqbhxNmunio=
o/p from tool
jqbhxNmunioWRmE3XhbiHg==

我试图理解我在代码中遗漏了什么,为什么在线web工具的长度高于python代码中文本的长度

非常感谢你的帮助。多谢各位

答复

在添加一个如下所示的8位焊盘后,它确实匹配

pad(plaintext.encode('utf-8'), block_size, style='pkcs7')

Tags: 工具代码from文本importapicryptoencrypt