Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

Node.js의 crypto.scrypt() 메서드

<시간/>

crypto.scrypt() 메서드는 scrypt 메서드에 대한 비동기 구현을 제공합니다. scrypt는 무차별 대입 공격으로부터 시스템을 보호하고 무효화하는 암호 기반 키 파생 기능으로 정의할 수 있습니다. 그러나 스크립트 함수는 메모리와 마찬가지로 계산적으로도 비용이 많이 듭니다.

구문

crypto.scrypt(password, salt, keylen, [options], [callback])

매개변수

위의 매개변수는 다음과 같이 설명됩니다 -

  • 비밀번호 – 항목을 디코딩하는 데 필요한 암호 필드입니다. 문자열, 개체, TypedArray 등이 될 수 있습니다.

  • 소금 – 이 값은 가능한 한 고유해야 합니다. 이것은 주로 데이터를 암호화하는 데 사용됩니다. 솔트의 최소 권장 길이는 16바이트입니다.

  • 키렌 – 이 매개변수는 키의 길이를 정의하며 숫자여야 합니다.

  • 옵션

    • 비용 – 이것은 각 메모리에 대한 CPU 비용입니다. 이 값은 1보다 큰 2의 거듭제곱이어야 합니다. 기본값은 16384입니다.

    • 블록 크기 – 이 매개변수는 각 블록 크기에 대한 값을 정의합니다. 기본값은 8입니다.

    • 병렬화 – 이 매개변수는 병렬화 매개변수를 정의합니다. 기본값은 1입니다.

    • N – 이 매개변수는 비용의 별칭이며 대신 사용할 수 있습니다. 한 번에 하나만 정의할 수 있습니다.

    • r – 이 매개변수는 blockSize의 별칭이며 유사하게 한 번에 하나만 정의할 수 있습니다.

    • p – 병렬화를 위한 별칭. 하나만 정의할 수 있습니다.

    • 맥스멤 – 메모리 상한값입니다. 128*N*r> maxmem일 때 오류가 발생합니다. 기본값은 32*1024*1024입니다.

  • 콜백 – 이 함수는 오류가 발생했을 때 처리하고 싶을 때 호출됩니다.

예시

이름이 scrypt.js인 파일을 만들고 아래 코드 조각을 복사합니다. 파일을 생성한 후 다음 명령을 사용하여 아래 예와 같이 이 코드를 실행하십시오 -

node scrypt.js

scrypt.js

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

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

// Calling the scrypt() method with the below parameters
crypto.scrypt('tutorialspoint', 'asdfghjkl', 32, (err, derivedKey) => {

if (err) throw err;

// Prints the derived key as a buffer value
console.log("The derived key(1) is:", derivedKey);
});

// Calling the scrypt() method with the cost option
crypto.scrypt('GeeksforGeeks', 'tfytdx', 128,
   { N: 512 }, (err, derivedKey) => {

if (err) throw err;

// Prints the derived key as a buffer value
console.log("The derived key(2) is:", derivedKey);
console.log();
});

출력

C:\home\node>> node scrypt.js
The derived key(2) is: <Buffer b3 f8 72 5f 58 df 98 d9 c0 8a ba 0c 2c 50 85 b1
76 de 39 35 40 27 7d 57 f1 6a a1 07 54 dc c9 63 65 32 f2 db 29 95 dc ee 0b 9f
e3 d5 0a 9e 3a d0 f6 b4 ... >

The derived key(1) is: <Buffer ae 50 38 61 17 f7 11 51 e4 50 63 3c 2a 9c ec f0
46 42 a6 ca 04 78 67 05 c8 8c 0c 69 00 c3 03 7f>

예시

예를 하나 더 살펴보겠습니다.

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

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

// Initializing the value of salt as a typedArray
const salt = new Uint32Array(7);

// Using the scrypt() method with below parameters
crypto.scrypt('WelcomeTutorialspoint', salt, 16, (err, derivedKey) => {
   if (err) throw err;
   // Printing the derived key in encoded string format
   console.log("The derived key(1) is:",
      derivedKey.toString("ascii"));
});

// Initialising the value of salt as a DataView
const newSalt = new DataView(new ArrayBuffer(5));

// Using the script() method with cost parameter
crypto.scrypt('HelloTutorialspoint', newSalt, 16, { N: 32 }, (err, derivedKey) => {
   if (err) throw err;
   // Printing the derived key in encoded string format
   console.log("The derived key(2) is:",
      derivedKey.toString("base64"));
});

출력

C:\home\node>> node scrypt.js
The derived key(2) is: PBYDRlgayLVGjC8z3YUcSQ==
The derived key(1) is: <Uu0allCb,d?,Z5_