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

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

Crypto.publicDecrypt () được sử dụng để giải mã dữ liệu đã cho trong bộ đệm với khóa công khai. Bộ đệm này đã được mã hóa bằng cách sử dụng khóa riêng tương ứng, tức là phương thức crypto.privateEncrypt ().

Cú pháp

 crypto.publicDecrypt (khóa, bộ đệm) 

Tham số

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

  • phím - Nó có thể chứa 5 loại dữ liệu dưới đây thuộc loại sau - Đối tượng, Chuỗi, Bộ đệm hoặc KeyObject.

    • cụm mật khẩu - Đây là cụm mật khẩu tùy chọn cho khóa cá nhân.

    • đệm - Đây là một giá trị tùy chọn được xác định trong crypto.constants.

    • mã hóa - Đây là kiểu mã hóa cần được sử dụng khi giá trị bộ đệm, khóa, oaepLabel hoặc cụm mật khẩu là chuỗi.

  • đệm - Trường này chứa nội dung dữ liệu cần mã hóa. Các loại bộ đệm có thể có là:string, TypedArray, Buffer, ArrayBuffer, DataView.

Ví dụ

Tạo một tệp có tên - publicDecrypt.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 -

 nút publicDecrypt.js 

publicDecrypt.js

 // crypto.publicDecrypt Ví dụ về Demo // Nhập tiền điện tử, fs và đường dẫn modulevar crypto =request ('crypto'); var fs =Requi ('fs'); const path =request ('path'); / / Tạo hàm dưới đây để tạo khóa chức năng createKeyFiles () {const keyPair =crypto.generateKeyPairSync ('rsa', {modulusLength:520, publicKeyEncoding:{type:'spki', format:'pem'}, privateKeyEncoding:{type:'pkcs8 ', định dạng:' pem ', mật mã:' aes-256-cbc ', cụm mật khẩu:' '}}); // Tạo tệp khóa công khai với tên bên dưới fs.writeFileSync ("public_key", keyPair.publicKey); fs.writeFileSync ("private_key", keyPair.privateKey);} // Gọi Tạo khóa methodgenerateKeyFiles (); // Đọc Private và Public Keyvar private =fs.readFileSync ('private_key'); var public =fs.readFileSync (' public_key '); // Xác định dữ liệu datavar ban đầu =' Chào mừng bạn đến với TutorialsPoint '; console.log ("Dữ liệu gốc là:" + data); // Mã hóa dữ liệu bằng private keyencrypted =crypto.privateEncrypt (private, Buffer.from (data, 'utf8')). toString ('base64'); // Giải mã dữ liệu sử dụng publicKeyoriginalData =crypto.publicDecrypt (public, Buffer.from (được mã hóa, 'base64')); console.log (); // In msgconsole.log được mã hóa ("Được mã hóa bằng khóa riêng:" + đã được mã hóa); console.log (); // In msgconsole.log đã được giải mã ("Được giải mã bằng khóa công khai:" + originalData.toString ()); 

Đầu ra

Dữ liệu gốc là:

Ví dụ

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

 // crypto.publicDecrypt Ví dụ về Demo // Nhập tiền điện tử và fs modulevar crypto =request ('crypto'); var fs =request ('fs'); // Tạo hàm dưới đây để tạo khóa chức năng createKeyFiles () {const keyPair =crypto.generateKeyPairSync ('rsa', {modulusLength:520, publicKeyEncoding:{type:'spki', format:'pem'}, privateKeyEncoding:{type:'pkcs8', format:'pem', cipher:'aes -256-cbc ', cụm mật khẩu:' '}}); // Tạo tệp khóa công khai với tên bên dưới fs.writeFileSync ("public_key", keyPair.publicKey); fs.writeFileSync ("private_key", keyPair.privateKey);} // Gọi Tạo khóa methodgenerateKeyFiles (); // Đọc Private KeyprivateKey =fs.readFileSync ('private_key'). toString (); var buffer =Buffer.from ( 'Chào mừng bạn đến với TutorialsPoint', 'utf8'); console.log ("Bộ đệm dữ liệu trước khi mã hóa") console.log (đệm); // Mã hóa bộ đệm textencrypted =crypto.privateEncrypt (privateKey, buffer); // In dữ liệu after cryptconsole.log ("Dữ liệu sau khi mã hóa:"); console.log (đã mã hóa); // Đọc Public keypublicKey =fs.readFileSync ('public_key'). toString (); // Giải mã văn bản đã mã hóa bằng public keydecryptedData =crypto.publicDecrypt (publicKey, được mã hóa); // In contentconsole.log gốc ("Dữ liệu sau khi giải mã:"); console.log (decryptedData); 

Đầu ra

 C:\ home \ node>> node publicDecrypt.js Bộ đệm dữ liệu trước khi mã hóa  Dữ liệu sau khi mã hóa: Dữ liệu sau khi giải mã: