Notice
Recent Posts
Recent Comments
Link
반응형
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 마이바티스
- 스프링부트
- 구글캘린더api
- Javascript
- 웹
- 전자정부 서버세팅
- 자바스크립트기초문법
- 구글 oauth
- 자바
- javaspring
- java
- springboot
- js
- 리액트프로젝트세팅
- 코딩
- Spring Boot
- HTML
- 자바스크립트 기초
- 리액트세팅
- react
- spring
- 기초 코딩
- 기초코딩
- 자바스크립트기초
- CSS
- mybatis
- 자바스크립트
- 처음만나는자바스크립트
- 웹앱
- 리액트초기세팅
Archives
- Today
- Total
인생 디벨로퍼
SHA-256 해시 함수 코드 본문
728x90
반응형
Secure Hash Algorithm 256
해시 함수의 하나.
임의의 데이터를 입력으로 받아 고정된 크기의 고유한 출력 값을 생성하는 알고리즘.
SHA-256은 256비트(32바이트) 크기의 해시 값을 생성하며, 보안 등급이 높아서 비밀번호 저장, 디지털 서명, 데이터 무결성 검증 등 다양한 보안 관련 작업에서 사용.
package shop.mtcoding.loginexample.util;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class PasswordHash {
public static String getPasswordHash(String password) {
// 패스워드 지정
String plainText = "test1234"; // 평문
String sha256 = "";
try {
/*
* MessageDigest 클래스의 getInstance() 메소드의 매개변수에 "SHA-256" 알고리즘 이름을 지정함으로써
* 해당 알고리즘에서 해시값을 계산하는 MessageDigest를 구할 수 있다
*/
MessageDigest mdSHA256 = MessageDigest.getInstance("SHA-256");
// 데이터(패스워드 평문)를 한다. 즉 '암호화'와 유사한 개념
mdSHA256.update(plainText.getBytes("UTF-8"));
// 바이트 배열로 해쉬를 반환한다.
byte[] sha256Hash = mdSHA256.digest();
// StringBuffer 객체는 계속해서 append를 해도 객체는 오직 하나만 생성된다. => 메모리 낭비 개선
StringBuffer hexSHA256hash = new StringBuffer();
// 256비트로 생성 => 32Byte => 1Byte(8bit) => 16진수 2자리로 변환 => 16진수 한 자리는 4bit
for (byte b : sha256Hash) {
String hexString = String.format("%02x", b);
hexSHA256hash.append(hexString);
}
sha256 = hexSHA256hash.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return sha256;
// System.out.println(sha256);
// 937e8d5fbb48bd4949536cd65b8d35c426b80d2f830c5c308e2cdec422ae2244
}
}
728x90
반응형
'JAVA Spring' 카테고리의 다른 글
[Ajax] 좋아요 만들기! (0) | 2023.06.18 |
---|---|
[Ajax] 썸네일 수정 contentType 설정 (0) | 2023.06.17 |
spring 정리 (0) | 2023.05.09 |
AOP 기본 연습 (1) (0) | 2023.03.14 |
JDBC를 이용한 자바 dbapp (0) | 2023.02.13 |