CS/ETC.

JAVA - MD5, SHA-256 암호화

prden 2022. 3. 30. 21:29

MessageDigest Class 

java.security.MessageDigest 클래스를 사용하며, 해시 알고리즘에는 MD5, SHA-1, SHA-256 등이 있다. SHA- 256 사용 권장

해싱은 단방향이고 다시 말해 복호화가 불가능하다. 반면, 암호화는 양방향으로 암호화를 역으로 하면 복호화도 가능하다. 

단방향 해시 함수는 어떤 수학적 연산에 의해 원본 데이터를 매핑시켜 완전히 다른 암호화된 데이터로 변환시킨다. 이 변환을 해시라고 하고 해시에 의해 암호화된 데이터를 다이제스트라고 한다. 

 

1. SHA-256 

SHA-256는 SHA 알고리즘의 한 종류로 256비트로 구성되며, 64자리 문자열을 반환한다.  SHA-256 해시 함수는 어떤 길이의 값을 입력하더라도 256비트의 고정된 결과값을 반환한다. SHA-256는 단방향 암호화 방식이기 때문에 복호화가 불가능하다. 

복호화를 사용하지 않아도 되기 때문에 속도가 빠르고 비밀번호의 일치여부 확인에 사용된다. 

https://bamdule.tistory.com/233

 

[JAVA] SHA-256 암호화 하기

1. SHA-256란? SHA-256은 SHA(Secure Hash Algorithm) 알고리즘의 한 종류로서 256비트로 구성되며 64자리 문자열을 반환합니다. 해시 알고리즘 SHA-2 계열 중 하나이며, 2^256만큼 경우의 수를 만들 수 있습니다..

bamdule.tistory.com

https://kshman94.tistory.com/84

 

JAVA - MD5, SHA256 암호화 하기 (해쉬 코드 얻기)

특정 텍스트를 암호화하여 DB에 보관해야 하는 일들이 있습니다. 특히 패스워드 같은 것은 입력받은 문자 그대로 저장하는 것보다 암호화하여 저장하는 것이 보안을 더 높일 수 있으며, 많은 건

kshman94.tistory.com

https://st-lab.tistory.com/100

 

패스워드의 암호화와 저장 - Hash(해시)와 Salt(솔트)

'보안은 그 어느 시스템의 정보보다 가장 중요하며 가장 안전해야 하는 것이다' 필자가 "프로그래머로써 가장 중요하게 생각해야 할 것 하나만 뽑는다면?" 이라는 질문이 들어온다면 위와 같이

st-lab.tistory.com

해시 함수도 특정 입력값에 따라 나오는 값이 정해져있다. abcde를 입력하면 동일한 해시값이 나옴.

따라서 레인보우테이블에 의해 실제 값을 찾을 수 있다. 이를 방지하기 위해 1. 해시 함수 여러 번 수행하기[키 스트레칭_Key Stretching] 과 2. Salt 방법이있다. 

 

1) 해시 함수 여러 번 수행하기 : 12345를 입력해서 다이제스트를 얻고 이 다이제스트를 SHA-256에 또 돌린다. 이렇게 돌리는 횟수는 2번 개발자 본인만 알고 있으면 된다. 

 

2) 솔트(Salt) : 해시 함수를 돌리기 전에 원문에 임의의 문자열을 덧 붙이는 것을 말한다. 

 

3) 입력값에 +Salt 하고 해시 함수 여러 번 돌리기 : 1,2 둘 다 사용하는 방법이 가장 안전하다. 

 

예시는 위에 링크에서 확인 하기 

'CS > ETC.' 카테고리의 다른 글

팝업, 모달창  (0) 2022.04.29
브랜치 전략  (0) 2022.04.17
git  (0) 2022.02.02
Signed & Unsigned  (0) 2022.01.07
openssl, soap이란  (0) 2021.12.26