[Java]SHA256 암호화(Encrypt) 정리 및 예제
1. SHA256이란?
우리가 프로그래밍을 하다 보면 암호화가 필요한 데이터들이 있다.
대표적으로 외부로 유출되면 안되는 유저들의 패스워드 같은 것들이 있는데
이런 데이터들은 DB에 저장을 할 때 그대로 저장하기 보다는 암호화를 한 뒤 저장을 하는 것이 보통이다.
(누군가 DB를 봐도 암호를 모르게 끔 하기 위함)
다만 주의해야 할 점은 SHA256은 한번 암호화 시키면 복호화가 불가능하다.
따라서 복호화가 필요한 데이터는 SHA256이 아닌 다른 방식으로 암호화 시키는 것을 추천한다.
2. SHA256 암호화 소스코드
SHA256 소스코드는 다음과 같다.
public String encryptSHA256(String str)
{
String sha="";
try {
MessageDigest sh= MessageDigest.getInstance("SHA-256");
sh.update(str.getBytes());
byte[] byteData = sh.digest();
StringBuilder sb=new StringBuilder();
for (byte byteDatum : byteData) {
sb.append(Integer.toString((byteDatum & 0xff) + 0x100, 16).substring(1));
}
sha=sb.toString();
} catch (NoSuchAlgorithmException e) {
System.out.println("암호화 에러-NoSuchAlgorithmException");
sha=null;
}
return sha;
}
여기에 매개변수로 암호화를 하고싶은 문자를 넣으면 암호화된 문자가 반환된다.
[참고] 빈 문자열도 암호화가 가능하다...?
이것 때문에 삽질을 했었는데 SHA256은 빈 문자열("")도 암호화 시켜준다....
빈 문자열을 암호화 하면
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
값이 이렇게 나오니 참고 바란다.
'Language > Java' 카테고리의 다른 글
[JAVA] 정규표현식 개념과 예제(회원가입, 결제, 본인인증 입력값 검사기 예제) (0) | 2021.02.06 |
---|---|
[Java]네이버 블로그 검색 API 적용 및 예제 (0) | 2020.09.10 |
[Java]생성자와 소멸자, this키워드 개념 정리 및 예제 (0) | 2020.09.07 |
[Java]객체와 메모리의 관계, null과 NullPointerException의 정리 및 예제 (0) | 2020.09.06 |
[Java]접근제어자(Access Modifier) 개념 정리 (0) | 2020.08.26 |