我最近在 Java 中使用了 AES 算法来加密文本。现在我需要在 PHP 中重建该算法,但我不知道如何,因为互联网上的 PHP 算法返回不同的结果。也许你可以帮助我。
这是要加密的 Java 代码:
private static final String KEY = "57238004e784498bbc2f8bf984565090";
public static String encrypt(final String plaintext) throws GeneralSecurityException {
SecretKeySpec sks = new SecretKeySpec(hexStringToByteArray(KEY), "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, sks, cipher.getParameters());
byte[] encrypted = cipher.doFinal(plaintext.getBytes());
return byteArrayToHexString(encrypted);
}
public static byte[] hexStringToByteArray(String s) {
byte[] b = new byte[s.length() / 2];
for (int i = 0; i < b.length; i++) {
int index = i * 2;
int v = Integer.parseInt(s.substring(index, index + 2), 16);
b[i] = (byte) v;
}
return b;
}
public static String byteArrayToHexString(byte[] b) {
StringBuilder sb = new StringBuilder(b.length * 2);
for (int i = 0; i < b.length; i++) {
int v = b[i] & 0xff;
if (v < 16) {
sb.append('0');
}
sb.append(Integer.toHexString(v));
}
return sb.toString().toUpperCase();
}
你们能帮我构建一个返回相同结果的 PHP 脚本吗?
示例:明文“STACKOVERFLOW”被加密为“FA652ECCDC39A11A93D2458AA2A0793C”。
提前致谢!