簡體   English   中英

AES-Java加密和PHP解密

[英]AES - Encryption in Java and decryption in PHP

為什么PHP解密方法不能解密用Java加密的數據?

當我僅使用Java或僅使用PHP加密和解密數據時,一切正常。

我有Java類,可以使用AES / ECB算法對數據進行加密/解密。 加密密鑰始終為2a925de8ca0248d7

package com.example.test.helpers;
import android.util.Base64;
import java.nio.charset.StandardCharsets;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;

public class Encryptor {

    /**
    * @param strToEncrypt - data to encrypt
    * @param secret - 16 bytes secret
    */
    public static String encrypt(String strToEncrypt, String secret) // secret is always 2a925de8ca0248d7
    {
        try {
            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding");
            cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(secret.getBytes(), "AES"));
            return Base64.encodeToString(cipher.doFinal(strToEncrypt.getBytes(StandardCharsets.UTF_8)), Base64.DEFAULT);
        }
        catch (Exception e)
        {
            System.out.println("Error while encrypting: " + e.toString());
        }
        return null;
    }

     /**
     * @param strToDecrypt - base64 encoded string to decrypt
     * @param secret - 16 bytes secret
     */
     public static String decrypt(String strToDecrypt, String secret) // secret is always 2a925de8ca0248d7
     {
         try {
             Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding");
        cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(secret.getBytes(), "AES"));
             return new String(cipher.doFinal(Base64.decode(strToDecrypt, Base64.DEFAULT)));
        }
        catch (Exception e) {
            System.out.println("Error while decrypting: " + e.toString());
        }
        return null;
    }
}

加密的數據被發送到服務器,在這里我嘗試使用PHP openssl_decrypt對其進行解密

openssl_decrypt($receivedEncryptedBase64Data, 'AES-256-ECB', '2a925de8ca0248d7');

不幸的是,openssl_decrypt返回一個空字符串。

好的,現在我明白了。 我應該在AES-256-ECB的PHP insetad中使用AES-128-ECB或將秘密密鑰擴展到256個字節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM