crypto.generateKeyPair()는 지정된 유형의 새로운 비대칭 키 쌍을 생성하는 데 사용할 수 있습니다. 키 쌍 생성에 지원되는 유형은 RSA, DSA, EC, Ed25519, Ed448, X25519, X448 및 DH입니다. 이 함수는 publicKeyEncoding 또는 privateKeyEncoding이 지정될 때 결과에 대해 keyObject.export가 호출된 것처럼 작동합니다. 그렇지 않으면 keyObject의 해당 부분이 반환됩니다.
구문
crypto.generateKeyPair(유형, 옵션, 콜백)
매개변수
위의 매개변수는 다음과 같이 설명됩니다 -
-
유형 – 키를 생성해야 하는 문자열 유형을 보유합니다. 지원되는 유형은 - RSA, DSA, EC, Ed25519, Ed448, X25519, X448 및 DH입니다.
-
옵션 – 다음 매개변수를 보유할 수 있습니다. −
-
모듈러스 길이 – 유형(RSA, DSA)에 대한 키 크기를 비트 단위로 보유합니다.
-
공개지수 – RSA 알고리즘에 대한 공개 지수 값을 보유합니다.
기본값은 – 0x10001
입니다. -
제수길이 – q의 크기를 비트 단위로 유지합니다.
-
namedCurve – 이것은 사용할 곡선의 이름을 유지합니다.
-
프라임 – 이것은 DH와 같은 유형에 대한 주요 매개변수를 유지합니다.
-
PrimeLength – 이것은 비트 단위의 소수 길이를 유지합니다.
-
발전기 – 이 매개변수는 사용자 정의 생성기 값을 보유합니다. 기본값:2.
-
그룹 이름 – DH 알고리즘에 대한 diffe-hellman 그룹 이름입니다.
-
publicKeyEncoding – 공개 키 인코딩을 위한 문자열 값을 유지합니다.
-
개인 키 인코딩 - 개인 키 인코딩을 위한 문자열 값을 유지합니다.
-
-
콜백 - 콜백에는 다음과 같은 매개변수가 있습니다. -
-
오류 – 이것은 오류 유형을 유지합니다.
-
공개키 – 공개 키의 값을 유지합니다.
-
개인 키 – 개인 키의 값을 유지합니다.
-
예시
이름이 generateKeyPair.js인 파일을 만들고 아래 코드 스니펫을 복사합니다. 파일을 생성한 후 다음 명령을 사용하여 아래 예와 같이 이 코드를 실행하십시오 -
노드 generateKeyPair.js
생성KeyPair.js
// crypto.generateKeyPair() 메소드의 흐름을 보여주는 Node.js 프로그램 // crypto에서 generateKeyPair 가져오기 moduleconst { generateKeyPair } =require('crypto');// 아래 매개변수로 generateKeyPair() 메소드 호출generateKeyPair( 'rsa', { modulusLength:530, // 옵션 publicExponent:0x10101, publicKeyEncoding:{ 유형:'pkcs1', 형식:'der' }, privateKeyEncoding:{ 유형:'pkcs8', 형식:'der', 암호:' aes-192-cbc', passphrase:'Welcome to TutorialsPoint!' }}, (err, publicKey, privateKey) => { // 콜백 function if(!err) { // 비대칭 키 쌍을 출력합니다 console.log ("공개 키:", publicKey); console.log(); console.log("개인 키:", privateKey); } else { // 오류가 있는 경우 출력 console.log("Errr is:", 오류); }});
출력
C:\home\node>> 노드 generateKeyPair.js공개 키는개인 키는 다음과 같습니다. 2a 86 48 86 f7 0d 01 05 0c 30 1c 04 08 1e a2 b4 ea 50 0e 8002 02 08 00 30 0c ...>
예시
예를 하나 더 살펴보겠습니다.
// crypto.generateKeyPair() 메소드의 흐름을 보여주는 Node.js 프로그램 // crypto에서 generateKeyPair 가져오기 moduleconst { generateKeyPair } =require('crypto');// 아래 매개변수로 generateKeyPair() 메소드 호출generateKeyPair( 'ec', { namedCurve:'secp256k1', // 옵션 publicKeyEncoding:{ type:'spki', format:'der' }, privateKeyEncoding:{ type:'pkcs8', format:'der' }},(err, publicKey, privateKey) => { // 콜백 function if(!err) { // 이것은 비대칭 키 쌍을 출력합니다 console.log("공개 키는 다음과 같습니다:", publicKey); console.log("16진수의 공개 키는 is :", publicKey.toString('hex')); console.log(); console.log("개인 키는 다음과 같습니다:", privateKey); console.log("16진수로 된 개인 키는 다음과 같습니다:", privateKey.toString( 'hex')); }else{ // 하나라도 있으면 오류를 출력합니다. console.log("Errr is:", err); }});
출력
C:\home\node>> 노드 generateKeyPair.js공개 키는 <버퍼 30 56 30 10 06 07 2a 86 48 ce 3d 02 01 06 05 2b 81 0400 0a 03 42 d30 7e 04 f CF는 CA 수 A8 5E 52 08 2A 20 D8 56 29 42c3 6B 9F D3 15 7C ...> 육각 공공 키는 다음 3056301006072a8648ce3d020106052b8104000a03420004d1d00b7ef7e33ecfd8082a20a85e52beca562942c36b9fd3157cf98b03b41ecc4b4e13b4cd5cd35814383ee76afabaf794faf6f31bc8c9f7007748f74767677cPrivate 키는 <02 01 00 30 10 06 07 2A 86 48 CE 02 3D 버퍼 (30) 81 (84) 01 0605 (b) 81 04 00 04 0A 6D 6B 30 02 01 01 04 20 05 01 80 (A1) D5 F7 65 56 6F A3 3a05 D3 6D EC 82 광고 ...> 개인 키 헥사이다 308184020100301006072a8648ce3d020106052b8104000a046d306b02010104200501a1d580f765566fa33a05d36dec82ad590ff8697d182ddca6b881acfbadd1a14403420004d1d00b7ef7e33ecfd8082a20a85e52beca562942c36b9fd3157cf98b03b41ecc4b4e13b4cd5cd35814383ee76afabaf794faf6f31bc8c9f7007748f74767677c 사전>