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

Node.js crypto.getCiphers() 메서드 – 지원되는 모든 암호화 알고리즘 목록 조회하기

Node.js의 crypto.getCiphers() 메서드는 현재 환경에서 지원하는 모든 암호화(cipher) 알고리즘의 이름을 배열 형태로 반환합니다. Node.js의 crypto 모듈은 OpenSSL을 기반으로 하며, 수십 종에 달하는 다양한 암호화 알고리즘을 제공합니다.

이 중에서 가장 널리 사용되는 알고리즘은 AES(Advanced Encryption Standard)입니다. AES는 128비트, 192비트, 256비트 키 길이를 지원하며, CBC, GCM, CTR 등 다양한 운영 모드와 함께 사용할 수 있어 데이터 암호화의 사실상 표준으로 자리 잡고 있습니다.

문법(Syntax)

crypto.getCiphers()

매개변수(Parameters)

getCiphers() 메서드는 별도의 입력값 없이 호출됩니다. 시스템에 설치된 OpenSSL이 지원하는 전체 암호화 알고리즘 목록을 자동으로 조회하여 배열로 반환하기 때문에 어떠한 인자도 필요하지 않습니다.

반환 값

지원되는 암호화 알고리즘 이름들이 담긴 문자열 배열(Array)을 반환합니다. 반환되는 목록은 Node.js 버전과 시스템에 빌드된 OpenSSL 설정에 따라 달라질 수 있습니다.

예제

아래 코드를 getCipher.js라는 이름의 파일로 저장한 뒤, 다음 명령어를 실행해 결과를 확인할 수 있습니다.

node getCipher.js

getCipher.js

// 지원되는 모든 암호화 알고리즘을 조회하는 Node.js 예제 프로그램

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

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

// 전체 알고리즘 목록 출력
console.log("지원되는 암호화 알고리즘 목록:", cipher);

실행 결과(Output)

C:\home\node>> node getCipher.js
지원되는 암호화 알고리즘 목록: [ 'aes-128-cbc',
'aes-128-cbc-hmac-sha1', 'aes-128-cbc-hmac-sha256',
'aes-128-ccm', 'aes-128-cfb',
'aes-128-cfb1', 'aes-128-cfb8',
'aes-128-ctr', 'aes-128-ecb',
'aes-128-gcm', 'aes-128-ocb',
'aes-128-ofb', 'aes-128-xts',
'aes-192-cbc', 'aes-192-ccm',
'aes-192-cfb', 'aes-192-cfb1',
'aes-192-cfb8', 'aes-192-ctr',
'aes-192-ecb', 'aes-192-gcm',
'aes-192-ocb', 'aes-192-ofb',
'aes-256-cbc', 'aes-256-cbc-hmac-sha1',
'aes-256-cbc-hmac-sha256', 'aes-256-ccm',
'aes-256-cfb', 'aes-256-cfb1',
'aes-256-cfb8', 'aes-256-ctr',
'aes-256-ecb', 'aes-256-gcm',
'aes-256-ocb', 'aes-256-ofb',
'aes-256-xts', 'aes128',
'aes128-wrap', 'aes192',
'aes192-wrap', 'aes256',
'aes256-wrap', 'aria-128-cbc',
'aria-128-ccm', 'aria-128-cfb',
'aria-128-cfb1', 'aria-128-cfb8',
'aria-128-ctr', 'aria-128-ecb',
'aria-128-gcm', 'aria-128-ofb',
'aria-192-cbc', 'aria-192-ccm',
'aria-192-cfb', 'aria-192-cfb1',
'aria-192-cfb8', 'aria-192-ctr',
'aria-192-ecb', 'aria-192-gcm',
'aria-192-ofb', 'aria-256-cbc',
'aria-256-ccm', 'aria-256-cfb',
'aria-256-cfb1', 'aria-256-cfb8',
'aria-256-ctr', 'aria-256-ecb',
'aria-256-gcm', 'aria-256-ofb',
'aria128', 'aria192',
'aria256', 'bf',
'bf-cbc', 'bf-cfb',
'bf-ecb', 'bf-ofb',
'blowfish', 'camellia-128-cbc',
'camellia-128-cfb', 'camellia-128-cfb1',
'camellia-128-cfb8', 'camellia-128-ctr',
'camellia-128-ecb', 'camellia-128-ofb',
'camellia-192-cbc', 'camellia-192-cfb',
'camellia-192-cfb1', 'camellia-192-cfb8',
'camellia-192-ctr', 'camellia-192-ecb',
'camellia-192-ofb', 'camellia-256-cbc',
'camellia-256-cfb', 'camellia-256-cfb1',
'camellia-256-cfb8', 'camellia-256-ctr',
'camellia-256-ecb', 'camellia-256-ofb',
'camellia128', ... 70 more items ]

활용 팁

반환된 목록에는 AES뿐만 아니라 ARIA(국내 개발 알고리즘), Camellia, Blowfish 등 다양한 알고리즘이 포함되어 있습니다. 실무에서는 createCipheriv() 메서드와 함께 특정 알고리즘 이름을 사용하기 전에, 해당 알고리즘이 현재 환경에서 지원되는지 getCiphers()로 먼저 검증하는 방식이 안전합니다.