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

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

<시간/>

crypto.publicDecrypt()는 공개 키로 버퍼의 주어진 데이터를 해독하는 데 사용됩니다. 이 버퍼는 해당 개인 키 즉, crypto.privateEncrypt() 메서드를 사용하여 암호화되었습니다.

구문

crypto.publicDecrypt(키, 버퍼)

매개변수

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

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

    • 암호 - 개인 키에 대한 선택적 암호입니다.

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

    • 인코딩 – buffer, key, oaepLabel 또는 passphrase 값이 문자열일 때 사용해야 하는 인코딩 유형입니다.

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

예시

publicDecrypt.js라는 이름의 파일을 만들고 아래 코드 스니펫을 복사합니다. 파일을 생성한 후 다음 명령을 사용하여 아래 예와 같이 이 코드를 실행하십시오 -

노드 publicDecrypt.js

publicDecrypt.js

// crypto.publicDecrypt 데모 예제// 암호화, fs 및 경로 가져오기 modulevar crypto =require('crypto');var fs =require('fs');const path =require('path');/ / 키 생성을 위한 아래 함수 생성 function generateKeyFiles() { const keyPair =crypto.generateKeyPairSync('rsa', { modulusLength:520, publicKeyEncoding:{ type:'spki', format:'pem' }, privateKeyEncoding:{ type:'pkcs8 ', 형식:'pem', 암호:'aes-256-cbc', 암호:'' } }); // 아래 이름으로 공개키 파일 생성 fs.writeFileSync("public_key", keyPair.publicKey); fs.writeFileSync("private_key", keyPair.privateKey);}// 생성 키 호출 methodgenerateKeyFiles();// 개인 및 공개 키 읽기 private =fs.readFileSync('private_key');var public =fs.readFileSync(' public_key');// 원본 데이터 정의var data ='Welcome to TutorialsPoint';console.log("Original Data is:"+data);// 개인 키를 사용하여 데이터 암호화encrypted =crypto.privateEncrypt(private, Buffer.from (data, 'utf8')).toString('base64');// 데이터 복호화 publicKeyoriginalData =crypto.publicDecrypt(public, Buffer.from(encrypted, 'base64'));console.log();// 암호화된 인쇄 msgconsole.log("개인 키로 암호화됨:" + 암호화됨);console.log();// 해독된 인쇄 msgconsole.log("공개 키로 암호화됨:" + originalData.toString());

출력

C:\home\node>> 노드 publicDecrypt.js원본 데이터:EFBihrKebXb0gfCF7nTnw82yXpToH5eVBpLc8O5QL/ZgfZ/qJT5I/BejSMwV4NFCp+AIKnz2l 키가 있는 TutorialsPointEncrypted에 오신 것을 환영합니다. 

예시

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

// crypto.publicDecrypt 데모 예제// crypto 및 fs 모듈 가져오기var crypto =require('crypto');var fs =require('fs');// 아래에 키 생성 함수 생성function generateKeyFiles() { const keyPair =crypto.generateKeyPairSync('rsa', { modulusLength:520, publicKeyEncoding:{ 유형:'spki', 형식:'pem' }, privateKeyEncoding:{ 유형:'pkcs8', 형식:'pem', 암호:'aes -256-cbc', 암호:'' } }); // 아래 이름으로 공개키 파일 생성 fs.writeFileSync("public_key", keyPair.publicKey); fs.writeFileSync("private_key", keyPair.privateKey);}// 생성 키 호출 methodgenerateKeyFiles();// 개인 키 읽기privateKey =fs.readFileSync('private_key').toString();var buffer =Buffer.from( 'Welcome to TutorialsPoint', 'utf8');console.log("암호화 전 데이터 버퍼")console.log(buffer);// 버퍼 암호화 textencrypted =crypto.privateEncrypt(privateKey, buffer);// 데이터 인쇄 after encryptionconsole.log("암호화 후 데이터:");console.log(encrypted);// 공개 키 읽기publicKey =fs.readFileSync('public_key').toString();// 공개 keydecryptedData를 사용하여 암호화된 텍스트 암호 해독 =crypto.publicDecrypt(publicKey, encrypted);// 원본 contentconsole.log("복호화 후 데이터:");console.log(decryptedData);
인쇄

출력

C:\home\node>> node publicDecrypt.js 암호화 전 데이터 버퍼 버퍼 a6 9d e3 86 9f 3f 4b b9 3f f7 a6 9c 7c 16 0f 04 b9 c4 16 0b 08 f1 0639 de 32 75 7c 26 88 fa 49 bd 31 48b 025 6 ..>복호화 후 데이터:<버퍼 57 65 6c 63 6f 6d 65 20 74 6f 20 54 75 74 6f 72 69 61 6c 73 50 6f 696e 74>