본문 바로가기
dev/javascript

[javascript] 자바스크립트 MD5 해시 생성하기

by 최연탄 2023. 4. 24.
728x90
반응형

참고: https://ourcodeworld.com/articles/read/1547/how-to-create-md5-hashes-in-javascript

이 포스트에서는 JavaScript로 MD5 해시를 쉽게 만드는 방법을 알아보겠습니다.

MD5는 원래 디지털 서명 인증을 위한 보안 암호화 해시 알고리즘으로 쓰기위해 설계되었습니다. 하지만 데이터 무결성 확인, 의도치 않은 데이터 손상 감지 체크섬 이외의 다른 용도로 사용하는 것을 권장하지 않습니다. 즉 파일의 무결성 입증에 이 알고리즘을 사용하는게 일반적입니다. JavaScript에는 암호화 유틸리티가 없지만 외부 라이브러리를 사용하여 동일한 기능을 구현할 수 있습니다. 이 경우 오픈소스에 @blueimp가 작성한 MD5 라이브러리를 Github에서 사용할 수 있습니다. 이 MD5의 라이브러리는 Node.js와 같은 서버환경, RequireJS 또는 webpack과 같은 모듈로더 및 모든 웹 브라우저에서 사용할 수 있습니다.

프로젝트에 MD5 라이브러리 추가하는 방법

프로젝트에서 패키지 관리자를 사용하는 경우 다음과 같이 NPM을 사용하여 쉽게 설치할 수 있습니다.

npm install blueimp-md5

또는 예전 방식으로 HTML에 MD5 스크립트(공식 저장소에서 원본 및 mini 버전을 얻을 수 있음)를 넣을 수 있습니다.

<!-- Include MD5 library -->
<script src="md5.js"></script>

<!-- Include MD5 minified version -->
<script src="md5.min.js"></script>

이 라이브러리에 대해 더 많은 정보를 얻고 싶다면 Github 공식 저장소를 방문해보기 바랍니다.

MD5 알고리즘으로 해시하는 방법

프로젝트에 라이브러리를 설치했다면 이제 MD5를 가져와야 합니다.

// npm을 사용했다면 require로 불러오기
const md5 = require("blueimp-md5");

// ES6를 사용 중 이라면
import { md5 } from "blueimp-md5";

// script 태그를 사용했다면 window에서 전역으로 사용가능

라이브러리를 import하고 이후 사용 방법은 매우 간단합니다. MD5 함수는 최대 3개의 매개변수를 받을 수 있습니다.

  • value (string): MD5 알고리즘으로 해시할 문자열
  • key (string): key-hash를 만들기위한 HMAC 키
  • raw (boolean): true인 경우 결과 값을 raw로 받고 아니면 hex 인코딩으로 받기 (기본 false)

MD5 hash (hex-encoded)

간단히 해시하려는 문자열을 MD5 함수의 첫 번째 매개변수로 전달해 해시를 만들 수 있습니다.

const hash = md5("sisiblog");

console.log(hash);

HMAC-MD5 (hex-encoded)

첫 번째 매개변수에 원하는 문자열을 넣고 두 번째 매개변수에 key를 넣어 간단히 HMAC-MD5 해시를 생성할 수 있습니다.

const hash = md5("sisiblog", "tistory");

console.log(hash);

MD5 hash (raw)

첫 번째 매개변수에 해시하려는 문자열을 넣고 두 번째 매개변수로 null을 넣은 후 세 번째 매개변수에 true를 넣어 주어진 문자열에서 MD5 해시를 생성할 수 있습니다.

const rawhash = md5("sisiblog", null, true);

console.log(rawhash);

HMAC-MD5 hash (raw)

HMAC 해시의 raw 값을 얻는 방법도 위와 동일합니다. 세 번째 매개변수에 true만 넣어주면 됩니다.

const rawhash = md5('sisiblog', 'tistory', true);

console.log(rawhash);

관련 글

HMAC hash 알고리즘 이란?

MD5 hash 알고리즘 이란?

자바스크립트 SHA-256 hash 생성하기

반응형

댓글