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

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

<시간/>

crypto.createCipheriv()는 'crypto' 모듈의 프로그래밍 인터페이스입니다. 주어진 알고리즘, 키, iv 및 함수에 전달된 옵션에 따라 Decipher 객체를 생성하고 반환합니다.

구문

crypto.createDecipheriv(알고리즘, 키, iv, [옵션])

매개변수

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

  • 알고리즘 – 암호를 생성하는 데 사용할 알고리즘에 대한 입력을 받습니다. 가능한 값은 다음과 같습니다. es192, aes256 등

  • – 알고리즘 및 iv에서 사용하는 원시 키에 대한 입력을 취합니다. 가능한 값은 문자열, 버퍼, TypedArray 또는 DataView 유형일 수 있습니다. 선택적으로 비밀 유형의 유형 개체일 수 있습니다.

  • iv – 초기화 벡터라고도 합니다. 이 매개변수는 암호를 불확실하고 고유하게 만드는 iv에 대한 입력을 받습니다. 비밀일 필요는 없습니다. 가능한 값 유형은 문자열, 버퍼, TypedArray, DataView입니다. 암호에 필요하지 않은 경우 null일 수 있습니다.

  • 옵션 – 이것은 스트림 동작을 제어하기 위한 선택적 매개변수입니다. 암호가 CCM 또는 OCB 모드(예:'aes-256-ccm')에서 사용되는 경우 이는 선택 사항이 아닙니다.

예시

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

노드 createDecipheriv.js

createDecipheriv.js

// ECDH 생성을 위한 노드 데모 프로그램// 암호화 모듈 가져오기 const crypto =require('crypto');// algorithmconst 알고리즘 초기화 ='aes-192-cbc';// passwordconst 정의 및 초기화 password ='123456789'// keyconst key 초기화 중 =crypto.scryptSync(password, 'TutorialsPoint', 24);// iv vectorconst iv 초기화 중 =Buffer.alloc(16, 0);// 위와 같이 해독기 생성 정의된 매개변수const decipher =crypto.createDecipheriv(algorithm, key, iv);let decrypted ='';// datadecipher.on('readable', () => { let chunk; while (null !==) 읽기 및 암호화 chunk =decipher.read())) { 해독된 +=chunk.toString('utf8'); }});//닫기/종료 처리 eventdecipher.on('end', () => { console.log( Decrypted);});// 복호화될 암호화된 데이터 const encrypted ='uqeQEkXy5dpJjQv+JDvMHw==';// 해독된 textdecipher.write(encrypted, 'base64');decipher.end();console을 인쇄합니다. log("완료...!");

출력

C:\home\node>> 노드 createDecipheriv.jsCompleted... !TutorialsPoint

예시

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

// ECDH 생성을 위한 노드 데모 프로그램// 암호화 모듈 가져오기 const crypto =require('crypto');// algorithmconst 알고리즘 초기화 ='aes-256-cbc';// passwordconst 정의 및 초기화 password ='123456789'// keyconst 키 초기화 =crypto.randomBytes(32);// iv vectorconst iv 초기화 =crypto.randomBytes(16);// 데이터 기능을 암호화하는 암호화 기능 encrypt(text) {// 생성 위에 정의된 매개변수가 있는 암호let cipher =crypto.createCipheriv('aes-256-cbc', Buffer.from(key), iv);// 암호화된 텍스트 업데이트 중...let encrypted =cipher.update(text); // Concatenationencrypted =Buffer.concat([encrypted, cipher.final()]);// 암호화된 데이터와 함께 iv 벡터 반환return { iv:iv.toString('hex'), encryptedData:encrypted.toString(' hex') };}//데이터 함수를 복호화하기 위한 복호화 함수 decrypt(text) {let iv =Buffer.from(text.iv, 'hex');let encryptedText =Buffer.from(text.encryptedData, 'hex');// 알고리즘, 키 및 ivlet에서 암호 해독 생성하기 decipher =crypto.createDecipheriv( 'aes-256-cbc', Buffer.from(key), iv);// 해독된 텍스트릿 업데이트하기 decrypted =decipher.update(encryptedText); Decrypted =Buffer.concat([decrypted, decipher.final()]);// 복호화 후 응답 데이터 반환return decrypted.toString();}// 아래 데이터 암호화 및 출력 출력var output =encrypt("Welcome to TutorialsPoint !" );console.log("암호화된 데이터 -- ", 출력);//복호화된 데이터 인쇄console.log("암호화된 데이터 -- ", 암호 해독(출력));

출력

C:\home\node>> 노드 createDecipheriv.js암호화된 ​​데이터 -- { iv:'3fb2c84290e04d9bfb099bc65a7ac941',encryptedData:'4490777e90c5a78037cb92a95037cb92a950d561에 오신 것을 환영합니다.