如何在PHP中实现AES 128 ECB?

如何在PHP中实现AES 128 ECB?,php,aes,php-openssl,Php,Aes,Php Openssl,我有一个简单的AES加密的Java代码片段,我想将其转换为PHP,但是我用PHP代码得到的输出与Java输出不匹配。 下面是Java和PHP中的代码以及联机执行的链接 JAVA代码: (IDE:) 等效的PHP代码(需要更正): (IDE:) 查看的文档,特别是第4个参数($options)的说明。如果未设置OPENSSL\u RAW\u DATA标志,结果将返回Base64编码,即在当前PHP代码中,它被Base64编码了两次。@Topaco非常感谢,现在看来这是一个愚蠢的错误,我们已经花了

我有一个简单的AES加密的Java代码片段,我想将其转换为PHP,但是我用PHP代码得到的输出与Java输出不匹配。 下面是Java和PHP中的代码以及联机执行的链接

JAVA代码:

(IDE:)

等效的PHP代码(需要更正):

(IDE:)



查看的文档,特别是第4个参数(
$options
)的说明。如果未设置
OPENSSL\u RAW\u DATA
标志,结果将返回Base64编码,即在当前PHP代码中,它被Base64编码了两次。@Topaco非常感谢,现在看来这是一个愚蠢的错误,我们已经花了很多时间调试它。:)将第四个参数设置为
1
解决了该问题。
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.*;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;


public class Main
{
    public static SecretKeySpec getkey(String str) {
        try {
            return new SecretKeySpec(Arrays.copyOf(MessageDigest.getInstance("SHA-1").digest(str.getBytes("UTF-8")), 16), "AES");
        } catch (NoSuchAlgorithmException e) {
        } catch (UnsupportedEncodingException e2) {
        }
        return null;
    }


        public static String encrypt(String str) {
        byte[] bArr;
        try {
            SecretKeySpec key = getkey("password");
            Cipher instance = Cipher.getInstance("AES");
            instance.init(1, key);
            bArr = instance.doFinal(str.getBytes("UTF-8"));
        } catch (Exception e) {
            bArr = null;
        }
        return Base64.getEncoder().encodeToString(bArr);
    }


    public static void main(String[] args) {
        String data = "hello";
        String encryptedData = encrypt(data);
        System.out.println(encryptedData);
    }
}

<?php

function encrypt($data, $key) {
$encrypted = openssl_encrypt($data, "aes-128-ecb", $key, 0,);
return base64_encode($encrypted);
}


$keyHex16 = substr(sha1('password'), 0, 32);
$key = hex2bin($keyHex16);

$data= 'hello';

$enc = encrypt($data, $key);

echo $enc;

?>