728x90
안녕하세요 이번시간에는 JAVA에서 SHA-256 함수를 사용해서 암호화를 해보겠습니다.
SHA-256 알고리즘은 java.security.MessageDigest 클래스를 사용하여 구현할 수 있습니다.
먼저 getInstance("SHA-256") 메서드를 호출하여 SHA-256 알고리즘의 인스턴스를 생성한 다음,
update() 메서드를 호출하여 입력 문자열의 바이트 배열을 업데이트합니다.
마지막으로 digest() 메서드를 호출하여 해시 값을 계산하고,
계산된 해시 값을 bytesToHex() 메서드를 사용하여 16진수 문자열로 변환하여 반환합니다.
bytesToHex() 메서드는 바이트 배열의 각 바이트 값을 16진수 문자열로 변환하여 StringBuilder에 추가하고,
StringBuilder의 내용을 문자열로 반환합니다.
해당 클래스입니다.
SHA256.java
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class SHA256 {
// 입력 문자열을 SHA-256으로 암호화하여 해시 값을 반환하는 메서드
public String encrypt(String text) throws NoSuchAlgorithmException {
// SHA-256 알고리즘의 인스턴스 생성
MessageDigest md = MessageDigest.getInstance("SHA-256");
// 입력 문자열의 바이트 배열을 업데이트하여 해시 값을 계산
md.update(text.getBytes());
// 계산된 해시 값을 16진수 문자열로 변환하여 반환
return bytesToHex(md.digest());
}
// 바이트 배열을 16진수 문자열로 변환하는 메서드
private String bytesToHex(byte[] bytes) {
StringBuilder builder = new StringBuilder();
for (byte b : bytes) {
// 바이트 값을 16진수 문자열로 변환하여 StringBuilder에 추가
builder.append(String.format("%02x", b));
}
// StringBuilder의 내용을 문자열로 반환
return builder.toString();
}
}
이제 메인메서드 만들어서 테스트 해보겠습니다.
import java.security.NoSuchAlgorithmException;
public class Main {
public static void main(String[] args) throws NoSuchAlgorithmException {
//작성 클래스의 인스턴스 생성
SHA256 sha256 = new SHA256();
String password = "비밀번호";
String password2 = "비밀번호2";
//cryptogram : SHA256으로 암호화된 비밀번호
String cryptogram = sha256.encrypt(password);
System.out.println("input : "+password);
System.out.println("After SHA256 : "+ cryptogram);
//비밀번호 일치 여부
System.out.println(password+" : "+cryptogram.equals(sha256.encrypt(password)));
System.out.println(password2+" : "+cryptogram.equals(sha256.encrypt(password2)));
}
}
결과입니다. 감사합니다.
'Java' 카테고리의 다른 글
[Java] awt 테트리스 - 실전편 (0) | 2023.06.17 |
---|---|
[Java] 스케줄링 라이브러리, Quartz 사용해 Hello world 출력해보기 (0) | 2023.06.16 |
[Java] awt 테트리스 - 기본편 (0) | 2023.06.03 |
[Java] 자바 추상 클래스(Abstract Class) 예제 (0) | 2023.05.01 |
[JAVA] 오류 종류 정리 및 런타임 예외클래스 예제 (0) | 2023.02.25 |