为了将字节数组解码为 ASCII 之类的东西,您需要知道它的原始编码。否则,您需要将其视为二进制文件。
注意:Base64 旨在跨网络传输二进制数据。
我建议对您的字节数组进行 Base64 编码。然后在您的 PHP 代码中将 Base64 字符串解码回 UTF-8 字符串。
在 Java 中,以下是如何对字节数组进行 Base64 编码,然后将其解码回 UTF-8:
import org.apache.commons.codec.binary.Base64;
public class MyTest {
public static void main(String[] args) throws Exception {
byte[] byteArray = new byte[] {100,25,28,-122,-26,94,-3,-26};
System.out.println("To UTF-8 string: " + new String(byteArray, "UTF-8"));
byte[] base64 = Base64.encodeBase64(byteArray);
System.out.println("To Base64 string: " + new String(base64, "UTF-8"));
byte[] decoded = Base64.decodeBase64(base64);
System.out.println("Back to UTF-8 string: " + new String(decoded, "UTF-8"));
/* the decoded byte array is the same as the original byte array */
for (int i = 0; i < decoded.length; i++) {
assert byteArray[i] == decoded[i];
}
}
}
上述代码的输出是:
转为 UTF-8 字符串:d��^�
转 Base64 字符串:ZBkchuZe/eY=
返回 UTF-8 字符串:d��^�</pre>
因此,如果您想在 PHP 代码中使用相同的二进制数据,请将 Base64 字符串剪切并粘贴到您的 PHP 代码中,然后将其解码回 UTF-8。像这样的东西:
<?php
$str = 'ZBkchuZe/eY=';
$key = base64_decode($str);
echo $key;
?>
我不使用 PHP 编码,但您应该能够使用此方法解码 Base64:http:
//php.net/manual/en/function.base64-decode.php
上面的代码应该将原始二进制数据回显为 UTF-8(尽管带有有趣的字符)。关键是$key
变量中看起来很有趣的字符串表示的二进制数据与 Java 字节数组中的二进制数据相同:
d��^�</pre>
您应该能够将$key
变量传递到您的 PHP 加密方法中。