Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

Node.js crypto.getHashes() 메서드 – 지원되는 모든 해시 알고리즘 확인하기

Node.js의 crypto.getHashes() 메서드는 현재 환경에서 지원하는 모든 해시(hash) 알고리즘의 이름을 문자열 배열 형태로 반환합니다. crypto 패키지에는 MD5, SHA 계열, SHA3, blake2 등 방대한 종류의 해시 알고리즘이 내장되어 있으며, 그중에서도 'MD5(Message-Digest Algorithm 5)'가 전통적으로 가장 널리 알려진 알고리즘입니다.

다만 실무에서는 보안 취약점 때문에 MD5나 SHA1보다는 SHA256 이상의 알고리즘을 사용하는 것이 권장된다는 점을 참고하세요.

문법(Syntax)

crypto.getHashes()

매개변수(Parameters)

이 메서드는 지원되는 해시 알고리즘의 전체 목록을 반환하는 역할만 하기 때문에, 별도의 입력 매개변수를 받지 않습니다.

반환값(Return Value)

현재 OpenSSL 빌드에서 지원하는 해시 알고리즘 이름들이 담긴 문자열 배열(Array)을 반환합니다.

예제(Example)

getHashes.js라는 이름의 파일을 생성하고 아래 코드 스니펫을 복사해 붙여넣습니다. 파일 생성 후에는 다음 명령어로 코드를 실행할 수 있습니다.

node getHashes.js

getHashes.js

// 모든 해시 알고리즘 목록을 가져오는 Node.js 데모 프로그램

// crypto 모듈 불러오기
const crypto = require('crypto');

// getHashes() 메서드 호출
const cipher = crypto.getHashes();

// 지원되는 모든 알고리즘 목록 출력
console.log("지원되는 모든 해시 알고리즘은 다음과 같습니다: ", cipher);

실행 결과(Output)

C:\home\node>> node getHashes.js
지원되는 모든 해시 알고리즘은 다음과 같습니다: [ 'RSA-MD4',
  'RSA-MD5',
  'RSA-RIPEMD160',
  'RSA-SHA1',
  'RSA-SHA1-2',
  'RSA-SHA224',
  'RSA-SHA256',
  'RSA-SHA3-224',
  'RSA-SHA3-256',
  'RSA-SHA3-384',
  'RSA-SHA3-512',
  'RSA-SHA384',
  'RSA-SHA512',
  'RSA-SHA512/224',
  'RSA-SHA512/256',
  'RSA-SM3',
  'blake2b512',
  'blake2s256',
  'id-rsassa-pkcs1-v1_5-with-sha3-224',
  'id-rsassa-pkcs1-v1_5-with-sha3-256',
  'id-rsassa-pkcs1-v1_5-with-sha3-384',
  'id-rsassa-pkcs1-v1_5-with-sha3-512',
  'md4',
  'md4WithRSAEncryption',
  'md5',
  'md5-sha1',
  'md5WithRSAEncryption',
  'ripemd',
  'ripemd160',
  'ripemd160WithRSA',
  'rmd160',
  'sha1',
  'sha1WithRSAEncryption',
  'sha224',
  'sha224WithRSAEncryption',
  'sha256',
  'sha256WithRSAEncryption',
  'sha3-224',
  'sha3-256',
  'sha3-384',
  'sha3-512',
  'sha384',
  'sha384WithRSAEncryption',
  'sha512',
  'sha512-224',
  'sha512-224WithRSAEncryption',
  'sha512-256',
  'sha512-256WithRSAEncryption',
  'sha512WithRSAEncryption',
  'shake128',
  'shake256',
  'sm3',
  'sm3WithRSAEncryption',
  'ssl3-md5',
  'ssl3-sha1',
  'whirlpool' ]

활용 팁

반환된 알고리즘 이름은 crypto.createHash(algorithm) 메서드에 그대로 전달하여 해시 객체를 생성하는 데 사용할 수 있습니다. 예를 들어 다음과 같이 특정 데이터의 SHA256 해시 값을 손쉽게 구할 수 있습니다.

const crypto = require('crypto');

const hash = crypto.createHash('sha256');
hash.update('Hello, Node.js!');

console.log(hash.digest('hex'));
// 출력: 16진수 형태의 SHA256 해시 값

또한 실행 환경(Node.js 버전 또는 OpenSSL 빌드)에 따라 지원되는 알고리즘 목록이 달라질 수 있으므로, 특정 알고리즘 사용 전에 crypto.getHashes()로 해당 알고리즘이 포함되어 있는지 먼저 확인하는 것이 좋습니다.