我正在处理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的倍数,并且可以解密而没有任何问题。
预先感谢您的任何想法或想法!
是你能算出这个?我有同样的问题 – andrei 2017-07-27 10:26:55