해싱알고리즘은 해시 함수를 기반으로 하는 암호화 알고리즘 중 하나입니다.
해싱 알고리즘이 암호화에 사용되는 이유는 해시함수의 특성에서 비롯됩니다.
Java에서는 기본적으로 해시 알고리즘을 사용하는 라이브러리를 제공하고 있습니다
java.security.MessageDigest
에 해당 라이브러리가 존재하며, 이를 이용하여 문자열에 해시 처리가 가능합니다.
MessageDigest의 문서
MessageDigest에서는 MD5, SHA-1, SHA-256을 사용하고 있으며, SHA-1의 사용은 권장하지 않으므로
/**
* 가장 기본적인 형태의 해시함수 구현
*/
public byte[] hasing(String src) throws NoSuchAlgorithmException {
MessageDigest md = MessageDigest.getInstance("SHA-256");// 해시 알고리즘에서 사용할 알고리즘의 종류를 적어준다.
md.update(msg.getBytes());
return md.digest();
}
/**
* 위와 형태가 비슷하지만 암호화의 결과물로 나온 바이트 타입의 배열을 16진수로 바꾸어 알아보기 힘들게 한다
*/
public String hasing(String src) throws NoSuchAlgorithmException {
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.update(msg.getBytes());
StringBuilder sb = new StringBuilder();
for(byte b : md.digest()){
// 바이트를 2자리의 16진수로 바꾸는데, 남는자리가 생긴다면 0을 추가한다
sb.append(String.format("%02x", b));
}
return sb.toString();
}