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

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

Phương thức crypto.createCipheriv () trước tiên sẽ tạo và sau đó trả về đối tượng mật mã theo thuật toán được truyền cho khóa đã cho và hệ số ủy quyền (iv).

Cú pháp

crypto.createCipheriv(algorithm, key, iv, options)

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 - createCipheriv.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 createCipheriv.js

createCipheriv.js

// A node demo program for creating the ECDH

// Importing the crypto module
const crypto = require('crypto');

// Initializing the algorithm
const algorithm = 'aes-256-cbc';

// Initializing the key
const key = crypto.randomBytes(32);

// Initializing the iv vector
const iv = crypto.randomBytes(16);

// Creating the function to encrypt data
function encrypt(text) {

// Creating the cipher with the above defined parameters
let cipher = crypto.createCipheriv(
   'aes-256-cbc', Buffer.from(key), iv);

let encrypted = cipher.update(text);

encrypted = Buffer.concat([encrypted, cipher.final()]);

// Returning iv and the encrypted data
return { iv: iv.toString('hex'),
   encryptedData: encrypted.toString('hex') };
}
// Printing public & private curve keys...
var output = encrypt("TutorialsPoint");
console.log(output);

Đầu ra

C:\home\node>> node createCipheriv.js
{ iv: '3dd899aa441c00d4d8d2ff95abb2e684',
encryptedData: 'b4985053bc1507fc25a4d99823dc8b03' }

Ví dụ

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

// A node demo program for creating the ECDH

// Importing the crypto module
const crypto = require('crypto');

// Initializing the algorithm
const algorithm = 'aes-192-cbc';

// Defining and initializing the password
const password = '123456789'

// Initializing the key
const key = crypto.scryptSync(password, 'TutorialsPoint', 24);

// Initializing the iv vector
const iv = Buffer.alloc(16, 0);

// Creating the cipher with the above defined parameters
const cipher = crypto.createCipheriv(algorithm, key, iv);

let encrypted = '';

// Reading and encrypting the data
cipher.on('readable', () => {
   let chunk;
   while (null !== (chunk = cipher.read())) {
      encrypted += chunk.toString('base64');
   }
});

//Handling the closing/end event
cipher.on('end', () => {
   console.log(encrypted);
});

// Printing public & private curve keys...
cipher.write('TutorialsPoint');
cipher.end();
console.log("Completed... !");

Đầu ra

C:\home\node>> node createCipheriv.js
Completed... !
uqeQEkXy5dpJjQv+JDvMHw==