如何将此byte []转换为String:
byte[] mytest = new byte[] {100,25,28,-122,-26,94,-3,-26};
我得到这个:"d��^�"
当我使用时:
new String( mytest , "UTF-8" )
以下是用于创建密钥的代码java:
m_key = new javax.crypto.spec.SecretKeySpec(new byte[] {100,25,28,-122,-26,94,-3,-26}, "DES");
感谢。
答案 0 :(得分:1)
为了将字节数组解码为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];
}
}
}
以上代码的输出是:
To UTF-8 string: d��^� To Base64 string: ZBkchuZe/eY= Back to UTF-8 string: d��^�
因此,如果您想在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��^�
您应该能够将$key
变量传递给PHP加密方法。
答案 1 :(得分:0)
你正在做的事情毫无意义imo。您正在创建一个以byte []作为参数的新字符串。我不认为该函数被假设解析。所以你最终得到的是很多垃圾。但一点点的谷歌搜索让我这样:http://www.mkyong.com/java/how-do-convert-byte-array-to-string-in-java/
答案 2 :(得分:0)