0

使用 Java,我在 MessageDigest 实例上使用 SHA1 将字符串值转换为哈希值。我现在已经创建了一个哈希对象:

MessageDigest md = MessageDigest.getInstance("SHA1");
byte[] hash = md.digest(password.getBytes("UTF-8"));

我不明白的部分是 b & 0xff 在以下代码中的含义:

StringBuilder sb = new StringBuilder(2*hash.length);
for(byte b : hash) {
   sb.append(String.format("%02x", b & 0xff));
}

我知道 %02x 意味着指定一个格式,其中有两个字符使用十六进制,但我不知道第二个参数是什么,它对每个字节的作用或它的含义。一个简单的解释会很棒!:-)

4

1 回答 1

2

这就是按位与运算符b & 0xff获取 的最后一个字节b。由于b已经是 a byte,我看不出有任何意义: the 的结果String.format是相同的。

于 2013-08-13T17:21:50.043 回答