2015-03-19 28 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

回答