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

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

<시간/>

crypto.privateDecrypt()는 해당 공개 키를 crypto.publicEncrypt() 메서드와 함께 사용하여 이전에 암호화된 매개변수에 전달된 개인 키를 사용하여 주어진 데이터 내용을 해독하는 데 사용됩니다.

구문

crypto.privateDecrypt(privateKey, 버퍼)

매개변수

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

  • – Object, String, Buffer 또는 KeyObject의 5가지 유형의 데이터를 포함할 수 있습니다.

    • oaepHash – 이 필드는 OAEP 패딩 및 MGF1에 사용할 해시 함수를 포함합니다. 기본값은 'sha1'입니다.

    • oaepLabel – 이 필드에는 OAEP 패딩 값이 포함됩니다. 지정하지 않으면 레이블이 사용되지 않습니다.

    • 패딩 – crypto.constants에 정의된 선택적 값입니다.

  • 버퍼 – 이 필드에는 해독할 데이터 내용이 포함됩니다. 가능한 버퍼 유형은 string, TypedArray, Buffer, ArrayBuffer, DataView입니다.

예시

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

노드 privateDecrypt.js

privateDecrypt.js

// crypto.privateDecrypt() 메소드의 흐름을 보여주는 Node.js 프로그램// crypto 및 fs 가져오기 moduleconst crypto =require('crypto');const fs =require("fs");// 읽기 공개 키.//generateKeyPair()publicKey =fs.readFileSync('public_key').toString();// 암호화할 아래 텍스트 전달var buf =Buffer.from('Hello TutorialsPoint', ' utf8');// 위의 textsecretData 암호화 =crypto.publicEncrypt(publicKey, buf);// 암호화된 textconsole.log(secretData);// 개인 키 읽기privateKey =fs.readFileSync('private_key').toString( );// 암호화된 textorigData 복호화 =crypto.privateDecrypt(privateKey, secretData);console.log();// 원본 텍스트를 bufferconsole.log(origData)로 출력;

출력

C:\home\node>> node privateDecrypt.js<버퍼 48 65 6c 6c 6f 20 54 75 74 6f 72 69 61 6c 73 90 6pree 7> 

예시

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

// crypto.privateDecrypt() 메서드의 흐름을 보여주는 Node.js 프로그램// crypto 및 fs 가져오기 moduleconst crypto =require('crypto');const fs =require("fs");// 키 생성 generateKeyPairSync() methodfunction을 사용하여 파일 생성 , 형식:'pem', 암호:'aes-256-cbc', 암호:'' } }); // 다음 파일에 키 쓰기 fs.writeFileSync("public_key", keyPair.publicKey); fs.writeFileSync("private_key", keyPair.privateKey);}// 생성 키 호출 methodgenerateKeyFiles();// 전달된 문자열 암호화 encryptString(일반 텍스트, publicKeyFile) { const publicKey =fs.readFileSync(publicKeyFile, "utf8"); // publicEncrypt() 메서드와 공개 키를 사용하여 데이터 암호화 const encrypted =crypto.publicEncrypt( publicKey, Buffer.from(plaintext)); return encryption.toString("base64");}// 전달된 문자열을 private Keyfunction으로 암호 해독 decryptString (ciphertext, privateKeyFile) { const privateKey =fs.readFileSync(privateKeyFile, "utf8"); // privateDecrypt() 메서드를 사용하여 데이터 암호 해독 // 및 해당 개인 키 const decrypted =crypto.privateDecrypt( { key:privateKey, passphrase:'', }, Buffer.from(ciphertext, "base64") ); return Decrypted.toString("utf8");}// 다음 데이터는 암호화 및 해독됩니다.const plainText ="TutorialsPoint!";// 아래 메서드를 호출하여 stringconst 암호화 =encryptString(plainText, "./public_key");/ / 일반 텍스트 인쇄console.log("Plaintext:", plainText);console.log();// 암호화된 textconsole.log("Encrypted Text:", encrypted);console.log();// 인쇄 해독된 textconsole.log("암호 해독된 텍스트:", decryptString(encrypted, "private_key"));

출력

C:\home\node>> 노드 privateDecrypt.jsPlaintext:TutorialsPoint!암호화된 텍스트:AbSrqG4qFBG1q9KUBt8ddJxk9uNanOHXqY19N0mNHx0fm4M119dZVhcNrAvM8UaIRJvh7AsdPAWyj