Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

Node.js의 crypto.generateKeyPairSync() 메서드

<시간/>

crypto.generateKeyPairSync()를 사용하여 동기화 흐름에서 지정된 유형의 새로운 비대칭 키 쌍을 생성할 수 있습니다. 키 쌍 생성에 지원되는 유형은 RSA, DSA, EC, Ed25519, Ed448, X25519, X448 및 DH입니다. 이 함수는 publicKeyEncoding 또는 privateKeyEncoding이 지정될 때 결과에 ​​대해 keyObject.export가 호출된 것처럼 동작합니다. 그렇지 않으면 keyObject의 해당 부분이 반환됩니다. 공개 키는 'spki', 개인 키는 'pkcs8'로 제안합니다.

구문

crypto.generateKeyPairSync(유형, 옵션)

매개변수

위의 매개변수는 다음과 같이 설명됩니다 -

  • 유형 – 키를 생성해야 하는 문자열 유형을 보유합니다. 지원되는 유형은 - RSA, DSA, EC, Ed25519, Ed448, X25519, X448 및 DH입니다.

  • 옵션 – 다음 매개변수를 보유할 수 있습니다. −

    • 모듈러스 길이 – 유형(RSA, DSA)에 대한 키 크기를 비트 단위로 보유합니다.

    • 공개지수 – RSA 알고리즘에 대한 공개 지수 값을 보유합니다.

      기본값은 – 0x10001

      입니다.
    • 제수길이 – q의 크기를 비트 단위로 유지합니다.

    • namedCurve – 이것은 사용할 곡선의 이름을 유지합니다.

    • 프라임 – 이것은 DH와 같은 유형에 대한 주요 매개변수를 유지합니다.

    • PrimeLength – 이것은 비트 단위의 소수 길이를 유지합니다.

    • 발전기 – 이 매개변수는 사용자 정의 생성기 값을 보유합니다. 기본값:2.

    • 그룹 이름 – DH 알고리즘에 대한 diffe-hellman 그룹 이름입니다.

    • publicKeyEncoding – 공개 키 인코딩을 위한 문자열 값을 유지합니다.

    • privateKeyEncoding - 개인 키 인코딩을 위한 문자열 값을 유지합니다.

예시

이름이 generateKeyPairSync.js인 파일을 만들고 아래 코드 스니펫을 복사합니다. 파일을 생성한 후 다음 명령을 사용하여 아래 예와 같이 이 코드를 실행하십시오 -

노드 generateKeyPairSync.js

KeyPairSync.js 생성

// crypto.generateKeyPair() 메서드의 흐름을 보여주는 Node.js 프로그램 // crypto moduleconst { generateKeyPairSync } =require('crypto');//동기화에서 publicKye 및 privateKey 값 가져오기 processconst { publicKey, privateKey } =generateKeyPairSync('ec', { namedCurve:'secp256k1', // 옵션 구현 publicKeyEncoding:{ type:'spki', format:'der' }, privateKeyEncoding:{ type:'pkcs8', format :'der' }});// 동기화에서 비대칭 키 쌍 인쇄 processconsole.log("공개 키:", publicKey);console.log();console.log("개인 키:" , privateKey);

출력

C:\home\node>> node generateKeyPairSync.js공개 키는 다음과 같습니다. 개인 키는 

예시

예를 하나 더 살펴보겠습니다.

// crypto.generateKeyPair() 메서드의 흐름을 보여주는 Node.js 프로그램 // crypto moduleconst { generateKeyPairSync } =require('crypto');//동기화에서 publicKye 및 privateKey 값 가져오기 processconst { publicKey, privateKey } =generateKeyPairSync('dsa', { modulusLength:570, //옵션 구현 publicKeyEncoding:{ type:'spki', format:'der' }, privateKeyEncoding:{ type:'pkcs8', format:' der' }});// 인코딩 후 비대칭 키 쌍 인쇄console.log("공개 키:", publicKey)console.log("base64의 공개 키 값:", publicKey.toString('base64'));console.log("-------------------------------------------- ----------")console.log("개인 키:", privateKey)console.log("base64의 개인 키:", privateKey.toString('base64')); 

출력

C:\home\node>> 노드 generateKeyPairSync.js공개 키는 베이스 64 공개 키 값은 :MIIBDzCBvwYHKoZIzjgEATCBswJJAJpc3aPODo4 + Du0RlhP + HKb2NScMYPlR7t0sdRJhr0JWPvtRyFWmn5ZAldFdDrUye5eQ + HmwgJboEWtCUm3b24CoLSQ74P1YkwIdAJs5rCSAIefaTT469xx + / 8C3jS4WjYpHci0rft8CR3Fx1wxDFdCHJBqPlR7iGxd + 7nZlChABL7UqCZMaiwCJ2ijVXc5dgr3Frudu7CbaAnRJStbqDjm5ppj4aaZV / 9FmKvWVao9wA0sAAkhQtXOIWQrHde + fXoZLgPhbTBctPB1tcFztNmq2s3IOKGfo2kFUL6eJu811SSZ1scQFLVKc5DrZIdW7t3UqzEH + xCVxNkWtGQk =- -------------------------------------------------- --개인 키는 다음과 같습니다. <버퍼 30 81 e5 02 01 00 30 81 bf 06 07 2a 86 48 ce 38 04 0130 81 b3 02 49 00 9a 5c dd a3 ce 0e 1 8eed 6 f3 ce 0e 1 8eed 3e 0c60 f9 51 ee dd 2c ...>base64의 개인 키는 다음과 같습니다. bgKgtJDvg / ViTAh0AmzmsJIAh59pNPjr3HH7 / wLeNLhaNikdyLSt + 3wJHcXHXDEMV0IckGo VHuIbF37udmUKEAEvtSoJkxqLAInaKNVdzl2CvcWu527sJtoCdElK1uoOObmmmPhpplX + / + 0WYq9ZVqj3AEHgIcJ2ON17GGE4FrtkJak337GB bAEkb + YjulN2rug ==