Node.js의 crypto.createSign() 메서드는 매개변수로 전달된 알고리즘을 사용하여 서명(Sign) 객체를 생성하고 반환합니다. 사용 가능한 모든 다이제스트(digest) 알고리즘의 이름을 확인하려면 crypto.getHashes()를 호출하면 됩니다.
일반적으로 다이제스트 알고리즘 이름을 사용하지만, 일부 경우에는 'RSA-SHA256'과 같은 서명 알고리즘 이름을 직접 지정하여 Sign 인스턴스를 생성할 수도 있습니다.
문법(Syntax)
crypto.createSign(algorithm, [options])
매개변수(Parameters)
algorithm – 서명 객체(인스턴스)를 생성할 때 사용할 알고리즘의 이름을 입력받습니다.
options – 선택적(optional) 매개변수로, 스트림(stream) 동작을 제어하는 데 사용할 수 있습니다.
예제 1: 서명 객체 생성하기
먼저 createSign.js라는 이름의 파일을 생성하고 아래 코드를 복사해 붙여넣습니다. 그런 다음 터미널에서 다음 명령어를 실행하여 결과를 확인할 수 있습니다.
node createSign.js
createSign.js
// createSign() 메서드 사용 예제
// crypto 모듈 불러오기
const crypto = require('crypto');
// 입력한 알고리즘으로 서명(sign) 객체 생성
const sign = crypto.createSign('SHA256');
// 생성된 서명 객체 출력
console.log(sign);실행 결과(Output)
C:\home\node>> node createSign.js
Sign {
_handle: {},
_writableState:
WritableState {
objectMode: false,
highWaterMark: 16384,
finalCalled: false,
needDrain: false,
ending: false,
ended: false,
finished: false,
destroyed: false,
decodeStrings: true,
defaultEncoding: 'utf8',
length: 0,
writing: false,
corked: 0,
sync: true,
bufferProcessing: false,
onwrite: [Function: bound onwrite],
writecb: null,
writelen: 0,
bufferedRequest: null,
lastBufferedRequest: null,
pendingcb: 0,
prefinished: false,
errorEmitted: false,
emitClose: true,
autoDestroy: false,
bufferedRequestCount: 0,
corkedRequestsFree:
{ next: null,
entry: null,
finish: [Function: bound onCorkedFinish] } },
writable: true,
_events: [Object: null prototype] {},
_eventsCount: 0,
_maxListeners: undefined }위 출력 결과에서 확인할 수 있듯이, createSign()은 내부적으로 쓰기 가능한 스트림(Writable Stream) 구조를 가진 Sign 객체를 반환합니다. 이는 데이터를 스트림 형태로 입력받아 서명을 생성할 수 있음을 의미합니다.
예제 2: write() 메서드로 데이터 쓰기
이번에는 생성된 서명 객체에 write() 메서드를 사용해 데이터를 작성하는 예제를 살펴보겠습니다.
// createSign() 메서드 사용 예제
// crypto 모듈 불러오기
const crypto = require('crypto');
// 입력한 알고리즘으로 서명(sign) 객체 생성
const sign = crypto.createSign('SHA256');
// 서명 객체에 데이터 쓰기
console.log(sign.write('Welcome to Tutorials Point'));실행 결과(Output)
C:\home\node>> node createSign.js true
write() 메서드가 true를 반환하는 것은 데이터가 성공적으로 서명 객체의 내부 버퍼에 기록되었음을 나타냅니다. 실제 전자 서명을 완성하려면 개인 키(private key)와 함께 sign() 메서드를 호출하여 최종 서명값을 생성하게 됩니다.