php與java互通aes_encrypt

church發表於2022-06-15

約定方式:

aes-128-ecb方式,pkcs7填充,base64

遇到的問題:

key小於等於16位時,呼叫openssl_encrypt($text, 'aes-128-ecb', $key)結果一致,當key大於16位時,結果不一致。

解決問題:

key大於16位,改用256位方式加密。

<?php

class Encrypter
{
    public static function encrypt($key, $text)
    {
        if (strlen($key) <= 16) {
            $algo = 'AES-128-ECB';
        } else {
            $algo = 'AES-256-ECB';
        }

        $data = openssl_encrypt($text, $algo, $key);

        return $data;
    }
}

相關文章