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

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

Phương thức crypto.scrypt () cung cấp triển khai không đồng bộ cho phương thức scrypt. Scrypt có thể được định nghĩa là một chức năng lấy khóa dựa trên mật khẩu để bảo vệ hệ thống khỏi các cuộc tấn công brute-force và làm cho nó không chuyển tiếp. Nhưng hàm script rất tốn kém về mặt tính toán cũng như về bộ nhớ.

Cú pháp

 crypto.scrypt (mật khẩu, muối, keylen, [tùy chọn], [gọi lại]) 

Tham số

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

  • mật khẩu - Trường mật khẩu cho mã scrypt cần thiết để giải mã mục nhập. Nó có thể là một chuỗi, đối tượng, TypedArray, v.v.

  • muối - Giá trị này phải càng độc đáo càng tốt. Điều này chủ yếu được sử dụng để mã hóa dữ liệu. Độ dài đề xuất tối thiểu của muối là 16 byte.

  • keylen - Tham số này xác định độ dài của khóa và phải là một số.

  • tùy chọn

    • chi phí - Đây là chi phí của cpu cho mỗi bộ nhớ được lấy. Giá trị này phải là lũy thừa của 2 lớn hơn 1. Giá trị mặc định là 16384.

    • blockSize - Tham số này xác định giá trị cho mỗi kích thước khối. Giá trị mặc định là 8.

    • song song hóa - Tham số này xác định tham số song song hóa. Giá trị mặc định là 1.

    • N - Tham số này là một bí danh cho chi phí và có thể được sử dụng ở vị trí của nó. Mỗi lần chỉ có thể xác định một.

    • r - Tham số này là bí danh cho blockSize và tương tự, mỗi lần chỉ có thể xác định một tham số.

    • p - Bí danh cho song song hóa. Chỉ có thể xác định một.

    • maxmem - Đây là giá trị giới hạn trên của bộ nhớ. Lỗi xảy ra khi 128 * N * r> maxmem. Giá trị mặc định là 32 * 1024 * 1024.

  • gọi lại - Hàm này được gọi khi có lỗi nếu bạn muốn xử lý.

Ví dụ

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

scrypt.js

« 'tutorialspoint', 'asdfghjkl', 32, (err, originKey) => {if (err) throw err; // In khóa dẫn xuất dưới dạng bộ đệm valueconsole.log ("Khóa dẫn xuất (1) là:", originKey );}); // Gọi phương thức scrypt () với cost optioncrypto.scrypt ('GeeksforGeeks', 'tfytdx', 128, {N:512}, (err ,osystemKey) => {if (err) ném sai; // In khóa dẫn xuất dưới dạng bộ đệm valueconsole.log ("Khóa dẫn xuất (2) là:", originKey); console.log ();});

Đầu ra

 C:\ home \ node>> node scrypt.js Khóa dẫn xuất (2) là: Khóa dẫn xuất (1) là: 

Ví dụ

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

 // Chương trình Node.js để chứng minh luồng của phương thức crypto.scrypt () // Nhập mã mô-đun crypto =request ('crypto'); // Khởi tạo giá trị của muối dưới dạng muối typedArrayconst =new Uint32Array ( 7); // Sử dụng phương thức scrypt () với các tham số bên dưới crypto.scrypt ('WelcomeTutorialspoint', salt, 16, (err, originKey) => {if (err) throw err; // In khóa dẫn xuất ở định dạng chuỗi mã hóa console.log ("Khóa dẫn xuất (1) là:", originKey.toString ("ascii"));}); // Khởi tạo giá trị của muối dưới dạng DataViewconst newSalt =new DataView (new ArrayBuffer (5)); // Sử dụng phương thức script () với tham số costcrypto.scrypt ('HelloTutorialspoint', newSalt, 16, {N:32}, (err ,osystemKey) => {if (err) throw err; // In khóa dẫn xuất trong định dạng chuỗi được mã hóa console.log ("Khóa dẫn xuất (2) là:", originKey.toString ("base64"));}); 

Đầu ra

 C:\ home \ node>> node scrypt.js Khóa dẫn xuất (2) là:PBYDRlgayLVGjC8z3YUcSQ ==Khóa dẫn xuất (1) là: