【发布时间】:2015-06-26 01:51:50
【问题描述】:
我正在使用soap 客户端,但在读取(和解密)响应附件时遇到问题。附件使用MTOM机制包含在响应中,并通过AES128-CBC算法加密(密钥包含在响应xml标头中)。
这是响应的基本结构:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope>
.. the xml data that includes the secret key for the attachment
decryption usign AES algorithm.
</soapenv:Envelope>
--MIMEBoundaryurn_uuid_174A74CB7221A5AF451426570004765
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary
Content-ID: <urn:uuid:174A74CB7221A5AF451426570004768@apache.org>
iQ�<]�+)B�ل�$O:���'�zT�F�x�����������}�t��݄��')#^��&�a�p}Q��¨גZ<G�%_"��|
Ps�<���'9��g](ǧ">�l��� ��XPrJ��jM�f�<$�)Q�*��
--MIMEBoundaryurn_uuid_174A74CB7221A5AF451426570004765--
MTOM 机制意味着附件作为二进制字符串发送(不编码为 base64)。正如我所建议的,这个二进制字符串是必须通过 AES 解密的。但不幸的是,应用 AES 解密的长度错误 - AES 使用 16 字节块,因此密码必须是 16 的倍数。但它不是,例如在上面的示例中,附件长度为 250。
也许我遗漏了一些东西,在解密之前必须对附件二进制字符串应用某种转换?
附:响应 xml 正文的部分使用相同的算法 (AES128-CBC) 进行加密,但作为 base64 密码发送,必须对其进行解码以获取二进制字符串,然后再进行解密。哪个工作正常。解码后的正文密码具有适当的长度 - 16 的倍数,可以毫无问题地解密。
提前感谢您的任何想法或想法!
【问题讨论】:
-
你能解决这个问题吗?我有同样的问题