Java和PHP的加密结果互不相同

时间:2018-11-23 04:38:21

标签: java php

我正在尝试在php和java中创建一个加密示例。但是java和php的加密结果互不相同。

我认为Java的结果是正确的。

我的PHP代码的哪一部分是错误的? 需要您的帮助,谢谢。

这就是我所拥有的

java

public String enrollmentKeyId(String data, String key) {
        byte[] keyData = java.util.Base64.getUrlDecoder().decode(key);

        SecretKeySpec secureKey = new SecretKeySpec(keyData, "AES");
        String result = null;

        try {
                Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
                cipher.init(Cipher.ENCRYPT_MODE, secureKey);
                byte[] encryptedData = cipher.doFinal(data.getBytes());
                result = java.util.Base64.getUrlEncoder().withoutPadding().encodeToString(encryptedData);
        } catch (Exception e) {
                e.printStackTrace();
        }

        return result;
}

php

$keyData = base64_decode($enrmtKey);

$ivlen = openssl_cipher_iv_length('aes-128-ecb');
$iv = openssl_random_pseudo_bytes($ivlen);

$encryptedData = openssl_encrypt($this->pkcs5Pad($shortUuid, 16), 'aes-128-ecb', $keyData, OPENSSL_RAW_DATA, $iv);
$result = base64_encode($encryptedData);

echo $result;

public function pkcs5Pad($text, $blockSize)
{
    $pad = $blockSize - (strlen($text) % $blockSize);

    return $text . str_repeat(chr($pad), $pad);
}

0 个答案:

没有答案