개인정보보호를 위해 비밀번호를 DB에 직접 넣기 보다는 해싱을 해서 넣는 것을 사용하고 있었다.
MD5로 해싱을 했는데, 이상하게 DB상에 들어가 있는 길이는 제 각각이었다.
MD5 해싱은 42자리로 고정된 길이인데 말이다.
알고보았더니 해싱하는 것은 자바의 java.security.MessageDigest를 이용해서 하고 있었는데,
digest()라는 메소드가 byte[]로 반환을 해주었기에 문자열로 바꾸어야 했던 것..
public byte[] java.security.MessageDigest.digest()
StringBuffer에 append로 byte를 문자로 바꾸었는데 Integer.toHexString은 0으로 패딩을 해주지 않았다.
buf.append(Integer.toHexString((int)digest[i] & 0x00ff));
다음과 같은 방법을 사용할 수 있다.
buf.append(String.format("%02x", ((int)digest[i] & 0x00ff)));
buf.append(Integer.toString((digest[i] &
0x00ff) + 0x100, 16).substring(1));
참고.
4차원알렉스의 망각 공작소 - C# :: MD5 Hash값 만들기
초보개발자 이야기. :: JAVA : MD5 , SHA-256 해쉬 코드 얻기
'Programing > JVM(Java, Kotlin)' 카테고리의 다른 글
스프링(Spring)-pom.xml (0) | 2012.11.14 |
---|---|
[Spring] 의존성관리(dependency management) (0) | 2012.11.12 |
스트림(Stream) (0) | 2012.10.19 |
자바 가상 머신(JVM) (0) | 2012.09.27 |
[Spring] Spring 3.0 시작 - Hello World 동작원리 (6) | 2012.09.06 |