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