SHA(Secure Hash Algorithm) 알고리즘의 한 종류로서 256비트로 구성되며 64자리 문자열을 반환합니다.
해시 알고리즘 SHA-2 계열 중 하나이며, 2^256만큼 경우의 수를 만들 수 있습니다.
SHA-256 해시 함수는 어떤 길이의 값을 입력하더라도 256비트의 고정된 결과값을 반환합니다.
입력 값이 조금만 변동되더라도 반환값이 완전히 달라지기 때문에 반환값을 토대로 입력값을 유추하는 것이 거의 불가능하다고 합니다.
복호화를 하지 않아도 되기 때문에 속도가 빠르며, 사용 예로 비밀번호의 일치여부 확인이 있습니다.
여기서 단방향 암호화란 평문을 암호화 했을 때, 원래 평문으로 복호화할 수 없는 암호화를 의미합니다.
JAVA에서 SHA 암호화를 사용하려면 java.security.MessageDigest 클래스를 사용해야합니다.
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;public class SHA256 {
public String encrypt(String text) throws NoSuchAlgorithmException { MessageDigest md = MessageDigest.getInstance("SHA-256"); md.update(text.getBytes()); return bytesToHex(md.digest()); } private String bytesToHex(byte[] bytes) { StringBuilder builder = new StringBuilder(); for (byte b : bytes) { builder.append(String.format("%02x", b)); } return builder.toString(); }
}