我正在通過HTTP連接下載XML文件,現在我需要在我的FTP和befaore下載中加密XML,我會在任何其他用途之前檢查XML簽名(或解密)。我有我的應用程序簽名(組合976個字母和數字),我不知道,我可以使用我的簽名字符串來驗證我的XML嗎?還是私人/公共密鑰解決方案?但是,如何創建密鑰以及如何將它們存儲在APK中?Android - 加密和解密
感謝
我正在通過HTTP連接下載XML文件,現在我需要在我的FTP和befaore下載中加密XML,我會在任何其他用途之前檢查XML簽名(或解密)。我有我的應用程序簽名(組合976個字母和數字),我不知道,我可以使用我的簽名字符串來驗證我的XML嗎?還是私人/公共密鑰解決方案?但是,如何創建密鑰以及如何將它們存儲在APK中?Android - 加密和解密
感謝
最好的辦法是使用非對稱密鑰對(RSA是最常見的),可以註冊在FTP站點的數據,讓你的私鑰,呃,私人和android的公鑰設備。您可以使用另一個密鑰對進行加密/解密。您可以使用您的簽名字符串作爲您的Android設備上的私人解密密鑰的密碼。確保您的應用程序不容易受到填充Oracle攻擊(加密,然後簽名或在解密失敗時不通知對方)。
請注意,實現您自己的XML簽名/驗證或XML加密/解密版本可能非常困難(並且充滿了使用XML安全相關庫至少匹配的缺陷)。我建議嘗試將您的XML包裝在CMS容器中。
對於其他用戶,鏈接到你的後一個問題: Android - verify the signature of XML
owlstead是正確的,試圖重新發明輪子是不是最佳的選擇。另一方面,如果你真的想要實現它,或者學習如何去做,簽名和驗證XML文件的內部是微不足道的。首先,您生成一個RSA公鑰/私鑰對。然後,您採用XML文件的散列並使用RSA密鑰對散列進行加密,並將加密數據與XMl文件一起發送,該文件現在使您的XML文件得到簽名。要驗證文件,只需取XML文件的哈希值並將其與加密哈希(在解密之後)進行比較,以查看它們是否匹配。如果是這樣,文件並沒有在一路上緩和。