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
https://kshman94.tistory.com/84
https://st-lab.tistory.com/100
해시 함수도 특정 입력값에 따라 나오는 값이 정해져있다. 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 |