1)如果在PHP中我有这个代码:
$var = "\x00\x23\x21\x11";
我应该如何用Java编写这个语句?
2)当我需要连接3种类型的变量时,这两个字节和一个字符串,而不是获取SHA-256摘要。
我做
String all = varbyte1+varstr1+varbyte2;
MessageDigest md = MessageDigest.getInstance("SHA-256");
byte[] digest = md.digest(all.getBytes("UTF-8"));
String hash = String.format("%0" + (digest.length*2) + "X", new BigInteger(1, digest));
这是对的吗?
答案 0 :(得分:2)
你做错了,你可能会注意到你是否看过all
:
String x = "meh";
byte b = 39;
byte c = 99;
String y = b + x + c ;
System.out.print(y);
打印39meh99
。我建议使用ByteArrayOutputStream并将这三部分写入三次stream.write
。
一般来说,你应该习惯Java中的字符串不是字节数组这一事实,因为char
和byte
之间的区别是非常强制执行的,所以你总是应该考虑一下你的编码用于在两者之间进行转换。
答案 1 :(得分:-1)
第1部分我可以回答。
$var = "\\x00\\x23\\x21\\x11";