我正在使用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.
也许我错过了某些东西,在解密之前必须对附件二进制字符串应用某种转换?
P.S。响应xml主体的一部分使用相同的算法(AES128-CBC)加密,但是作为base64密码发送,必须对其进行解码以获取二进制字符串然后解密。哪个工作正常。解码后的体密码具有适当的长度 - 16的倍数,可以毫无问题地解密。
提前感谢您的任何想法或想法!
答案 0 :(得分:0)
旧的,但是从Oracle大约一半的页面
注意:流式MTOM不能与消息一起使用 加密。
http://docs.oracle.com/cd/E14571_01/web.1111/e13734/mtom.htm#WSADV141