Computer >> Máy Tính >  >> Lập trình >> Javascript

Phương thức crypto.generateKeyPairSync () trong Node.js

Crypto.generateKeyPairSync () có thể được sử dụng để tạo cặp khóa bất đối xứng mới của loại được chỉ định trong quy trình đồng bộ hóa. Các loại được hỗ trợ để tạo cặp khóa là:RSA, DSA, EC, Ed25519, Ed448, X25519, X448 và DH. Hàm hoạt động như thể keyObject.export đã được gọi trên kết quả của nó khi publicKeyEncoding hoặc privateKeyEncoding được chỉ định, nếu không thì phần tương ứng của keyObject sẽ được trả về. Loại được đề xuất cho khóa công khai là 'spki' và cho khóa riêng tư là 'pkcs8'.

Cú pháp

crypto.generateKeyPairSync(type, options)

Tham số

Các thông số trên được mô tả như bên dưới -

  • loại - Nó chứa kiểu chuỗi mà khóa cần được tạo. Các loại được hỗ trợ là - RSA, DSA, EC, Ed25519, Ed448, X25519, X448 và DH.

  • tùy chọn - Nó có thể chứa các thông số sau -

    • modulusLength - Điều này chứa kích thước khóa tính bằng bit cho loại (RSA, DSA).

    • publicExponent - Điều này giữ giá trị số mũ công khai cho thuật toán RSA.

      Giá trị mặc định là - 0x10001

    • divisorLength - Điều này chứa kích thước của q tính bằng bit.

    • NameCurve - Điều này sẽ giữ tên của đường cong sẽ được sử dụng.

    • nguyên tố - Điều này sẽ giữ tham số nguyên tố cho các loại như DH.

    • PrimeLength - Điều này sẽ giữ độ dài nguyên tố tính bằng bit.

    • máy phát điện - Tham số này giữ giá trị trình tạo tùy chỉnh, Mặc định:2.

    • groupName - Đây là tên nhóm khác biệt cho thuật toán DH.

    • publicKeyEncoding - Điều này sẽ giữ giá trị chuỗi cho mã hóa khóa công khai.

    • privateKeyEncoding - Điều này sẽ giữ giá trị chuỗi cho mã hóa khóa cá nhân.

Ví dụ

Tạo một tệp có tên - createKeyPairSync.js và sao chép đoạn mã bên dưới. Sau khi tạo tệp, sử dụng lệnh sau để chạy mã này như được hiển thị trong ví dụ bên dưới -

node generateKeyPairSync.js

createKeyPairSync.js

// Node.js program to demonstrate the flow of crypto.generateKeyPair() method

// Importing generateKeyPairSync from crypto module
const { generateKeyPairSync } = require('crypto');

//Getting the value of publicKye and privateKey in a sync process
const { publicKey, privateKey } = generateKeyPairSync('ec', {
   namedCurve: 'secp256k1', // Implementing options
   publicKeyEncoding: {
      type: 'spki',
      format: 'der'
   },
   privateKeyEncoding: {
      type: 'pkcs8',
      format: 'der'
   }
});

// Printing the asymmetric key pair in a sync process
console.log("The public key is: ", publicKey);
console.log();
console.log("The private key is: ", privateKey);

Đầu ra

C:\home\node>> node generateKeyPairSync.js
The public key is: <Buffer 30 56 30 10 06 07 2a 86 48 ce 3d 02 01 06 05 2b 81
04 00 0a 03 42 00 04 a1 76 dd f0 fe 96 cc 28 59 a5 45 16 58 86 ca 3b 56 1e 04
ee b0 de 28 67 0a 70 ... >

The private key is: <Buffer 30 81 84 02 01 00 30 10 06 07 2a 86 48 ce 3d 02
01 06 05 2b 81 04 00 0a 04 6d 30 6b 02 01 01 04 20 e6 f0 69 2e b0 35 7d 0b 5c
ba 76 fc dc 9f 95 ae d7 ... >

Ví dụ

Hãy xem thêm một ví dụ.

// Node.js program to demonstrate the flow of crypto.generateKeyPair() method

// Importing generateKeyPairSync from crypto module
const { generateKeyPairSync } = require('crypto');

//Getting the value of publicKye and privateKey in a sync process
const { publicKey, privateKey } = generateKeyPairSync('dsa', {
   modulusLength: 570, //Implementing options
   publicKeyEncoding: {
      type: 'spki',
      format: 'der'
   },
   privateKeyEncoding: {
      type: 'pkcs8',
      format: 'der'
   }
});

// Printing asymmetric key pair after encoding
console.log("Public Key is: ", publicKey)
console.log("The public key value in base64 is: ",
   publicKey.toString('base64'));
console.log("------------------------------------------------------")
console.log("Private Key is: ", privateKey)
console.log("The private key in base64 is: ",
   privateKey.toString('base64'));

Đầu ra

C:\home\node>> node generateKeyPairSync.js
Public Key is: <Buffer 30 82 01 0f 30 81 bf 06 07 2a 86 48 ce 38 04 01 30 81
b3 02 49 00 9a 5c dd a3 ce 0e 8e 3e 0e ed 11 96 13 fe 1c a6 f6 35 27 0c 60 f9
51 ee dd 2c 75 12 ... >
The public key value in base64 is:
MIIBDzCBvwYHKoZIzjgEATCBswJJAJpc3aPODo4+Du0RlhP+HKb2NScMYPlR7t0sdRJhr0JWPvtRyF
Wmn5ZAldFdDrUye5eQ+HmwgJboEWtCUm3b24CoLSQ74P1YkwIdAJs5rCSAIefaTT469xx+/8C3jS4W
jYpHci0rft8CR3Fx1wxDFdCHJBqPlR7iGxd+7nZlChABL7UqCZMaiwCJ2ijVXc5dgr3Frudu7CbaAn
RJStbqDjm5ppj4aaZV/9FmKvWVao9wA0sAAkhQtXOIWQrHde+fXoZLgPhbTBctPB1tcFztNmq2s3IO
KGfo2kFUL6eJu811SSZ1scQFLVKc5DrZIdW7t3UqzEH+xCVxNkWtGQk=
------------------------------------------------------
Private Key is: <Buffer 30 81 e5 02 01 00 30 81 bf 06 07 2a 86 48 ce 38 04 01
30 81 b3 02 49 00 9a 5c dd a3 ce 0e 8e 3e 0e ed 11 96 13 fe 1c a6 f6 35 27 0c
60 f9 51 ee dd 2c ... >
The private key in base64 is:
MIHlAgEAMIG/BgcqhkjOOAQBMIGzAkkAmlzdo84Ojj4O7RGWE/4cpvY1Jwxg+VHu3Sx1EmGvQlY++1
HIVaaflkCV0V0OtTJ7l5D4ebCAlugRa0JSbdvbgKgtJDvg/ViTAh0AmzmsJIAh59pNPjr3HH7/wLeN
LhaNikdyLSt+3wJHcXHXDEMV0IckGo+VHuIbF37udmUKEAEvtSoJkxqLAInaKNVdzl2CvcWu527sJt
oCdElK1uoOObmmmPhpplX/0WYq9ZVqj3AEHgIcJ2ON17GGE4FrtkJak337GB+bAEkb+YjulN2rug==