본문 바로가기
개발자 이야기/JavaScript - Html - CSS

JavaScript에서 MD5로 해시 및 암호 해독하는 방법

by - 하루살이 - 2022. 3. 16.
728x90
반응형

JavaScript에서 MD5 해시를 만드는 방법

이 섹션에서는 MD5 해시를 생성할 수 있는 몇 가지 라이브러리를 탐색합니다.

가장 인기 있는 라이브러리 중 하나인 blueimp/JavaScript-MD5 부터 시작하겠습니다 . script태그 에 소스 JavaScript 파일을 포함하기만 하면 되므로 blueimp/JavaScript-MD5 라이브러리를 프로젝트에 통합하는 것은 정말 쉽습니다 . Node.js와 같은 서버 측 환경과도 호환됩니다. 그 외에도 RequireJS 및 webpack과 같은 모듈 로더도 지원하며 모든 주요 웹 브라우저에서 작동합니다.

Node.js를 지원하므로 다음 스니펫과 같이 NPM으로 빠르게 설치할 수 있습니다.

1
npm install blueimp-md5

프로젝트에서 NPM을 사용하지 않는 경우 대신 GitHub에서 소스 파일을 다운로드 할 수 있습니다 .

프로젝트에서 사용하려면 <head>HTML 페이지 섹션에 다음 스니펫을 포함하기만 하면 됩니다.

1
<script src="js/md5.min.js"></script>

프로젝트에 md5.min.js 파일을 포함했다면 이 라이브러리에서 제공하는 기능을 사용할 준비가 된 것입니다! 다음 예제를 통해 MD5 해시를 만드는 데 사용할 수 있는 방법을 살펴보겠습니다.

1
2
4
5
6
7
<script type="text/javascript" src="md5.min.js"></script>
<script>
window.addEventListener('load', function() {
    var strHash = md5('tutsplus');
    alert('The MD5 hash of the tutsplus string is:' + strHash);
});
</script>

보시다시피 사용 방법은 매우 간단합니다. blueimp /JavaScript-MD5 라이브러리는 md5MD5 해시를 생성하는 데 사용할 수 있는 기능을 제공합니다.

다음으로 MD5 해시를 생성하는 빠른 방법이기도 한 또 다른 라이브러리를 살펴보겠습니다. 제작자의 웹사이트에서 다운로드할 수 있습니다 . 다운로드가 완료되면 다음 스니펫과 같이 사용할 수 있습니다.

1
2
4
5
6
7
<script type="text/javascript" src="md5.js"></script>
<script>
window.addEventListener('load', function() {
    var strHash = md5('tutsplus');
    alert('The MD5 hash of the tutsplus string is:' + strHash);
});
</script>

이것이 JavaScript에서 MD5 해시를 생성하는 방법입니다. 다음 섹션에서는 JavaScript에서 MD5 해시를 해독하는 방법을 살펴보겠습니다.

JavaScript에서 MD5 해시를 해독하는 방법

우선, JavaScript에는 MD5 해시를 해독하는 기본 방법이 없다는 것을 이해합시다. MD5 해시는 단방향 알고리즘이므로 이론적으로 MD5 해시를 되돌릴 수 없습니다. MD5 해시를 해독하는 데 사용할 수 있는 몇 가지 해결 방법이 있지만 완벽하지 않으므로 항상 작동한다는 보장은 없습니다.

때때로 해시 해독을 가능하게 하는 한 가지는 MD5 알고리즘이 항상 문자열에 대해 동일한 결과를 생성한다는 것입니다. 따라서 모든 인기 있는 단어의 매핑이 포함된 데이터베이스가 있는 경우 MD5 해시의 원래 문자열을 찾기 위한 조회 서비스(무지개 테이블이라고도 함)로 사용할 수 있습니다. 해시를 생성한 문자열이 데이터베이스에 있는 경우 해시를 제공하기만 하면 찾을 수 있습니다.

이것이 보안 로그인 시스템이 항상 암호를 "소금"하는 이유입니다. 이는 해시할 문자열에 몇 가지 추가 문자를 추가하는 것을 의미합니다. 예를 들어 현재 시간(밀리초) 또는 임의의 32자 문자열과 같은 것입니다. 그렇게 하면 문자열에 예측할 수 없는 요소가 포함되어 레인보우 테이블에서 찾을 수 없습니다.  

JavaScript에서 MD5 해시를 확인하는 방법

해시가 문자열에 대해 올바른지 확인하려는 경우 쉽습니다. MD5 알고리즘으로 문자열을 해시하고 테스트 중인 해시 코드와 일치하는지 확인하십시오. 알고리즘의 결과가 테스트 중인 해시 코드와 일치하면 일치하고 원래 해시 코드가 유효합니다. 

로그인 시스템에 대한 솔트 해시의 유효성을 검사하는 경우 솔트 문자열도 포함해야 합니다. 일반적으로 솔트 문자열은 사용자 이름 및 해시된 암호와 함께 로그인 시스템의 데이터베이스 테이블에 저장됩니다. 그렇게 하면 사용자가 로그인하기 위해 입력하는 암호와 솔트를 쉽게 결합하고 데이터베이스에서 찾은 해시와 비교하여 결과 해시를 테스트할 수 있습니다. 

결론

오늘 우리는 JavaScript에서 문자열을 MD5 해시로 변환하는 방법에 대해 논의했습니다. 이론적으로 MD5 해시를 해독하는 것은 불가능하지만 해시는 단방향 알고리즘이므로 외부 API를 사용하여 MD5 해시를 해독하는 방법에 대해 논의했습니다.

728x90
반응형

댓글