자바에서는 MessageDigest 인스턴스의 SHA1을 사용하여 String 값을 해시로 변환합니다. 내가 해시 객체를 생성 한 시점에서입니다 :(b & 0xff)는 무엇을 의미합니까?
MessageDigest md = MessageDigest.getInstance("SHA1");
byte[] hash = md.digest(password.getBytes("UTF-8"));
내가 이해하지 못하는 부분은 & 0xff가 b를 다음 코드의 의미입니다 :
StringBuilder sb = new StringBuilder(2*hash.length);
for(byte b : hash) {
sb.append(String.format("%02x", b & 0xff));
}
내가 아는 % 02x 의미 두 개의 문자가 16 진법을 사용하는 형식을 지정하는 데 두 번째 매개 변수가 무엇인지, 각 바이트에 무엇을하는지 또는 그것이 무엇을 의미하는지 모릅니다. 간단한 설명이 좋을 것입니다! :-)
임의 사이드 참고 : 타사 라이브러리를 사용할 수 있다면이 모든 것이 [Guava] (https : //www.google.com/support/bin/answer.py?hl=ko)와 함께 'Hashing.sha1 (hashString (password, Charsets.UTF_8) .toString() //code.google.com/p/guava-libraries/). –