Hash Funtion 이란
해시 함수는 임의의 길이의 데이터를 입력받아 일정한 길이의 비트열로 반환 시켜주는 함수
Hash Funtion 특징
1.
단반향성: output을 이용해서 input을 추정하는 것이 매우 어렵
2.
충돌회피: 입력이 다르다면 서로 다른 해시 결과 값이 나와야 함
3.
효율적인 연산 가능: Hash Function을 사용하기 위해서는 빠른 연산이 가능해야 함
4.
종류: MD5, SHA-1, SHA-2(SHA256) 등
SHA-256 이란
해시 알고리즘의 종류 중 하니이며, MD5와 SHA 중 SHA-2 계열에 속하는 알고리즘
SHA-256 해시 함수는 어떤 길이의 값을 ㅇ입려갛더라도 256비트의 고정된 결과값을 반환
입력 값이 조금만 변동되더라도 반환값이 완전히 달라지기 때문에 반환값을 토대로 입력값을 유추하는 것이 거의 불가능
단방향 암호화 방식이기 때문에 복호화가 불가능
복호화를 하지 않아도 되기 때문에 속도가 빠르며, 사용 예로 비밀번호의 일치 여부 확인이 있음
SHA-256 예제(백준 10930) - JAVA
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();
}
}
JavaScript
복사