我試圖在PHP中使用Funambol移動同步服務器中使用的密碼加密算法,但是我很難從非Java背景來。代碼本身看起來很簡單:在PHP中實現這個Java密碼加密算法
encryptionKey = "Omnia Gallia in tres partes divida est";
byte[] newValue = new byte[24];
System.arraycopy(encryptionKey, 0, newValue, 0, 24);
encryptionKey = newValue;
KeySpec keySpec = new DESedeKeySpec(encryptionKey);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESEde");
Cipher cipher = Cipher.getInstance("DESEde");
SecretKey key = keyFactory.generateSecret(keySpec);
cipher.init(Cipher.ENCRYPT_MODE, key);
cipherBytes = cipher.doFinal(plainBytes);
我不一定要尋找一個完整的解決方案,而是指出我可以在PHP的一面使用什麼。 mcrypt可以處理這個問題和程度如何?我還需要什麼?這是甚至可以在PHP中?
好奇:我正在構建一個Funambol服務器的接口,我希望能夠使用PHP從接口本身添加用戶。
這是因爲算法是使用一些框架看起來很簡單。第一步是查看是否有相當於Triple DES的PHP(請參閱http://en.wikipedia.org/wiki/Triple_DES)。如果可能的話,你可以考慮在Java端添加一些可以直接通過PHP調用的外部接口。 – 2010-08-06 07:56:53
請參閱http://php.net/manual/en/function.mcrypt-encrypt.php它允許三重DES。 – Artefacto 2010-08-06 11:11:36
我相信朱利葉斯凱撒的報價應該是'divisa'而不是'divida' - 無論如何它是:'來自http://www.thelatinlibrary.com/caesar/gall1.shtml的Gallia est omnis divisa in partes tres' - - 儘管使用不正確的版本可能會更復雜:p – 2010-08-09 20:26:24