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

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

Crypto.createCipheriv () là một giao diện lập trình từ mô-đun 'tiền điện tử'. Nó sẽ tạo và trả về đối tượng Decipher theo thuật toán, khóa, iv và các tùy chọn đã cho được truyền vào trong hàm.

Cú pháp

 crypto.createDecipheriv (thuật toán, khóa, iv, [tùy chọn]) 

Tham số

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

  • thuật toán - Nó lấy đầu vào cho thuật toán sẽ được sử dụng để tạo mật mã. Một số giá trị có thể là:aes192, aes256, v.v.

  • phím - Nó nhận đầu vào cho khóa thô được sử dụng bởi thuật toán và iv. Các giá trị có thể có có thể thuộc loại:chuỗi, bộ đệm, TypedArray hoặc DataView. Nó có thể là một đối tượng kiểu bí mật.

  • iv - Còn được gọi là vector khởi tạo. Tham số này nhận đầu vào cho iv sẽ làm cho mật mã không chắc chắn và duy nhất. Nó không cần phải là một bí mật. Các kiểu giá trị có thể có của nó là:chuỗi, bộ đệm, TypedArray, DataView. Giá trị này có thể là rỗng nếu mật mã không cần thiết.

  • tùy chọn - Đây là một tham số tùy chọn để kiểm soát hành vi luồng. Đây không phải là tùy chọn khi mật mã được sử dụng ở chế độ CCM hoặc OCB (Như 'aes-256-ccm')

Ví dụ

Tạo tệp có tên - createDecipheriv.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 createDecipheriv.js 

createDecipheriv.js

 // Một chương trình demo nút để tạo ECDH // Nhập mô-đun tiền điện tử. password ='123456789' // Khởi tạo khóa keyconst =crypto.scryptSync (password, 'TutorialsPoint', 24); // Khởi tạo iv vectorconst iv =Buffer.alloc (16, 0); // Tạo Bộ giải mã với phần trên tham số được xác định chunk =decipher.read ())) {decrypted + =chunk.toString ('utf8');}}); // Xử lý sự kiện close / end eventdecipher.on ('end', () => {console.log ( decryzed);}); // Dữ liệu được mã hóa sẽ được giải mã log ("Đã hoàn thành ...!"); 

Đầu ra

 C:\ home \ node>> node createDecipheriv.jsCompleted ...! TutorialsPoint 

Ví dụ

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

 // Một chương trình demo nút để tạo ECDH // Nhập mô-đun tiền điện tử. password ='123456789' // Khởi tạo khóa keyconst =crypto.randomBytes (32); // Khởi tạo iv vectorconst iv =crypto.randomBytes (16); // Mã hóa hàm để mã hóa hàm dữ liệu mã hóa (văn bản) {// Tạo mật mã với các tham số được xác định ở trên cipher =crypto.createCipheriv ('aes-256-cbc', Buffer.from (key), iv); // Đang cập nhật văn bản được mã hóa ... letgalated =cipher.update (text); // Sử dụng concatenationencrypted =Buffer.concat ([đã được mã hóa, cipher.final ()]); // Trả về vectơ iv cùng với datareturn được mã hóa {iv:iv.toString ('hex'), mã hóaData :coded.toString (' hex ')};} // Hàm giải mã để giải mã hàm dữ liệu decrypt (văn bản) {let iv =Buffer.from (text.iv,' hex '); let EncryptText =Buffer.from (text.encryptedData,' hex '); // Tạo bộ giải mã từ algo, key và ivlet decipher =crypto.createDecipheriv ('aes-256-cbc', Buffer.from (key), iv); // Cập nhật textlet đã được giải mã decryised =decipher.update (codedText); decryzed =Buffer.concat ([decrypted, decipher.final ()]); // trả về dữ liệu phản hồi sau khi decryptionreturn decrypted.toString ();} // Mã hóa dữ liệu bên dưới và in ra outputvar output =encode ("Chào mừng bạn đến với TutorialsPoint!" ); console.log ("Dữ liệu được mã hóa -", đầu ra); // In dataconsole.log đã giải mã ("Dữ liệu được giải mã -", decrypt (đầu ra)); 

Đầu ra

 C:\ home \ node>> node createDecipheriv.jsDữ liệu được mã hóa - {iv:'3fb2c84290e04d9bfb099bc65a7ac941', đã mã hóaData:'4490777e90c5a78037cb92a99d561ae250562e261cutorials