Java DES加密后,如何用PHP解密?

Java des加密與php解密互通性詳解

本文深入探討Java DES加密算法與PHP解密的兼容性問題。 示例Java代碼使用自定義SecureUtil類和DES算法(ECB模式,無初始化向量),安全性較低,僅供學習參考,不建議用于生產環境。

Java端加密流程:使用密鑰“sg202303”初始化DES對象,調用SecureUtil.des(key.getBytes(StandardCharsets.UTF_8)).encrypt(value)加密字符串,再用Base64.encode編碼輸出。

Java加密代碼示例:

final String key = "sg202303"; final String value = "> 本文參與了[segmentfault 思否面試闖關挑戰賽],歡迎正在閱讀的你也加入。"; final byte[] encrypt = SecureUtil.des(key.getBytes(StandardCharsets.UTF_8)).encrypt(value); final String encode = Base64.encode(encrypt); System.out.println(encode);

對應的PHP解密代碼:

立即學習PHP免費學習筆記(深入)”;

$xxx = 'P+fEE0NngTu8Ak1E78zGGds3ozPA+M6h1u8v/FMih/Wi1k3YM/q+In+3wUgTv1XGhViBxCRYpqofV5ih0BN+vZTf2fnT4VbH59eRTAQoyl+4ePrKtVf1FngTbcBAT3CHNaYVUIXMbsAUpLwpcgMhJlqM6k4qbzqnEndrIMCzkkyk413alLIUy2/Fo97PvGdR';  $method = 'DES-ECB'; $key = 'sg202303';  var_dump(openssl_decrypt(base64_decode($xxx), $method, $key));

PHP代碼使用base64_decode解碼密文,再用openssl_decrypt函數(指定DES-ECB模式和密鑰“sg202303”)解密。 openssl_decrypt返回解密后的明文。

需要注意的是,Java的SecureUtil類和PHP的openssl_decrypt函數實現細節可能存在差異。 解密失敗可能由密鑰不一致或Java端加密過程使用了填充模式導致。

強烈建議: 由于DES算法和ECB模式安全性低,實際應用中應選擇更安全的加密算法和模式,例如AES-CBC或AES-GCM。

Java DES加密后,如何用PHP解密?

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享