2015-03-19 29 views
1

我正在处理soap客户端,并且在读取(和解密)响应附件时遇到问题。附件包含在使用MTOM机制的响应中,并通过AES128-CBC算法加密(秘密密钥包含在响应xml头中)。SOAP响应MTOM附件无法解密(AES算法)

下面是响应的基本结构:

<?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:[email protected]> 

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

是你能算出这个?我有同样的问题 – andrei 2017-07-27 10:26:55

回答