2010-06-21 42 views
1

我正在爲南非的學校開發一個應用程序,該應用程序需要以XML格式向國家IT機構提交數據進行統計處理。我目前使用PHP的DOMDocument類生成XML文件。如何使用PHP和RSA /三重DES對XML文檔中的字段進行加密

我的文件已經過了第一階段的驗證過程。下一階段是實施XML文件的加密和壓縮。壓縮是一個簡單的GZip,所以不用擔心。

該規範文檔指出,使用RSA加密(我將發佈RSA密鑰以實現到軟件中)以及某種形式的對稱加密,例如Triple DES(儘管這是一個「示例」,以及可以實施http://www.w3.org/TR/xmldsig-core的算法)。如果我正確地理解了這一點,那麼RSA加密就是編碼一個用於字段實際加密的對稱密鑰。

規範文檔還規定「XML文件的加密既可以在整個文件上執行,也可以在某些元素上執行。」我不太確定哪一個更容易,在這個階段,所以答案都足夠了!

我假設需求是加密XML標籤的內容而不是名稱(如http://www.w3.org/TR/xmlenc-core/#sec-eg-Element-Content-Character)。

我很抱歉,如果這看起來模糊。它目前是我擁有的所有信息,並且代理處的聯繫人很高興地說(VisualBasic.NET)代碼示例應解釋所有內容......如果您想查看此代碼示例,歡迎您查看以下ZIP文件中的Word文檔,從大約第213頁開始。 http://www.sita.co.za/doe_lurits/DEVS-00118%20Rev%201.2%2012%20Jan%202009.zip

如果任何人都可以幫助或指引我正確的方向,我會很感激。

+0

triple des很舊。 – rook 2010-06-21 15:43:53

+0

@我不反對。儘管可以使用任何受支持的加密方法。 – Philip 2010-06-21 16:02:48

回答

0

您應該只使用XMLSec加密來加密XML文件。下面的庫應該處理所有的細節你,

http://code.google.com/p/xmlseclibs/

+0

感謝:這似乎正是我所需要做的。我會進一步調查。 – Philip 2010-06-21 16:01:14

0

對於對稱加密,見openssl_encrypt,對於非對稱加密,見​​/openssl_private_decrypt

+0

謝謝你。接下來的問題是如何在XML中構造這個... – Philip 2010-06-21 15:18:29

+0

@Philip如果您選擇加密XML,則可以將XML文檔包裝在另一個包含公鑰(或證書)的XML文檔中,加密的對稱密鑰和加密的有效載荷各自在單獨的元素上,可能是base64編碼的。 – Artefacto 2010-06-21 15:26:58

0

聽起來像你可以加密整個文件或只是某些「敏感」標籤的內容。加密整個文檔可能是最簡單的方法。

至於RSA/3DES的東西 - 你幾乎肯定是對的。您將使用3DES加密文檔,然後使用其RSA公鑰對3DES密鑰進行加密。

所以,看起來你需要做的只是生成文檔,壓縮它,然後用3DES加密壓縮結果。

+0

謝謝,埃裏克。下一步是要知道這是如何最終在XML中構建的。我如何指出對稱密鑰是什麼?加密整個文件非常簡單,並將其放在適當的結構中是很好的。這將使用Triple DES完成。但在某個地方,我必須擁有鑰匙? – Philip 2010-06-21 15:17:40

0

的對稱加密的文檔加PK加密密鑰架構基本上是PGP。 OpenPGP會被客戶接受嗎?

+0

你沒有錯,但我正在編寫一個用於將數據傳輸到現有系統的接口。因此我必須遵守他們:-) – Philip 2010-06-21 15:59:56

相關問題