Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

crypto.createDecipheriv() วิธีการใน Node.js


crypto.createCipheriv() เป็นอินเทอร์เฟซการเขียนโปรแกรมจากโมดูล 'crypto' มันจะสร้างและส่งคืนอ็อบเจ็กต์ Decipher ตามอัลกอริทึมที่กำหนด คีย์ iv และตัวเลือกที่ส่งผ่านในฟังก์ชัน

ไวยากรณ์

crypto.createDecipheriv(อัลกอริทึม คีย์ iv [ตัวเลือก])

พารามิเตอร์

พารามิเตอร์ข้างต้นอธิบายไว้ด้านล่าง −

  • อัลกอริทึม – ใช้อินพุตสำหรับอัลกอริธึมที่จะใช้ในการสร้างตัวเลข ค่าที่เป็นไปได้ ได้แก่ aes192, aes256 เป็นต้น

  • กุญแจ – รับอินพุตสำหรับคีย์ดิบที่ใช้โดยอัลกอริทึมและ iv ค่าที่เป็นไปได้อาจเป็นประเภท:string, buffer, TypedArray หรือ DataView สามารถเลือกเป็นวัตถุประเภทที่เป็นความลับได้

  • iv – หรือที่เรียกว่าเวคเตอร์เริ่มต้น พารามิเตอร์นี้รับอินพุตสำหรับ iv ซึ่งจะทำให้รหัสไม่แน่นอนและไม่ซ้ำกัน ไม่จำเป็นต้องเป็นความลับ ประเภทของค่าที่เป็นไปได้คือ:string, buffer, TypedArray, DataView ค่านี้สามารถเป็นโมฆะได้หากรหัสลับไม่ต้องการ

  • ตัวเลือก – นี่เป็นพารามิเตอร์ทางเลือกสำหรับควบคุมพฤติกรรมการสตรีม ซึ่งไม่บังคับเมื่อใช้การเข้ารหัสในโหมด CCM หรือ OCB (เช่น 'aes-256-ccm')

ตัวอย่าง

สร้างไฟล์ที่มีชื่อ – createDecipheriv.js และคัดลอกข้อมูลโค้ดด้านล่าง หลังจากสร้างไฟล์แล้ว ให้ใช้คำสั่งต่อไปนี้เพื่อเรียกใช้โค้ดนี้ดังแสดงในตัวอย่างด้านล่าง −

โหนด createDecipheriv.js

createDecipheriv.js

// โปรแกรมสาธิตโหนดสำหรับการสร้าง ECDH// การนำเข้า crypto moduleconst crypto =require('crypto');// การเริ่มต้นอัลกอริทึมconst algorithm ='aes-192-cbc';// การกำหนดและการเริ่มต้นรหัสผ่านconst รหัสผ่าน ='123456789'// การเริ่มต้นคีย์คอนสต์คีย์ =crypto.scryptSync(รหัสผ่าน 'TutorialsPoint', 24);// การเริ่มต้น iv vectorconst iv =Buffer.alloc(16, 0);// การสร้างตัวถอดรหัสด้วยข้อความด้านบน พารามิเตอร์ที่กำหนดไว้const decipher =crypto.createDecipheriv (อัลกอริทึม, คีย์, iv);let decrypted ='';// การอ่านและการเข้ารหัส datadecipher.on ('readable', () => { ปล่อยให้ก้อน; ในขณะที่ (null !==( ก้อน =decipher.read ())) { ถอดรหัส +=chunk.toString ('utf8'); }}); // การจัดการการปิด/สิ้นสุด eventdecipher.on ('end', () => { console.log ( decrypted);});// ข้อมูลที่เข้ารหัสซึ่งจะถูกถอดรหัสconst encrypted ='uqeQEkXy5dpJjQv+JDvMHw==';// การพิมพ์ textdecipher.write ที่ถอดรหัสแล้ว (เข้ารหัส 'base64');decipher.end();console. log("เสร็จสิ้น... !");

ผลลัพธ์

C:\home\node>> โหนด createDecipheriv.jsCompleted... !TutorialsPoint

ตัวอย่าง

ลองดูอีกตัวอย่างหนึ่ง

// โปรแกรมสาธิตโหนดสำหรับการสร้าง ECDH// การนำเข้า crypto moduleconst crypto =require('crypto');// การเริ่มต้นอัลกอริทึมconst algorithm ='aes-256-cbc'; // การกำหนดและการเริ่มต้นรหัสผ่านconst รหัสผ่าน ='123456789'// การเริ่มต้นคีย์คีย์คอนสต์ =crypto.randomBytes (32); // การเริ่มต้น iv vectorconst iv =crypto.randomBytes (16); // ฟังก์ชันเข้ารหัสเพื่อเข้ารหัสฟังก์ชันข้อมูล เข้ารหัส (ข้อความ) {// การสร้าง รหัสที่มีพารามิเตอร์ที่กำหนดไว้ข้างต้นlet cipher =crypto.createCipheriv('aes-256-cbc', Buffer.from(key), iv);// กำลังอัปเดตข้อความที่เข้ารหัส...let encrypted =cipher.update(text); // การใช้ concatenationencrypted =Buffer.concat ([encrypted, cipher.final ()]); // ส่งคืนเวกเตอร์ iv พร้อมกับ datareturn ที่เข้ารหัส { iv:iv.toString ('hex'), encryptedData:encrypted.toString (' hex') };}//ฟังก์ชันถอดรหัสสำหรับถอดรหัสฟังก์ชันข้อมูลถอดรหัส (ข้อความ) {let iv =Buffer.from (text.iv, 'hex');let encryptedText =Buffer.from (text.encryptedData, 'hex');// การสร้างตัวถอดรหัสจาก algo, key และ ivlet decipher =crypto.createDecipheriv( 'aes-256-cbc', Buffer.from(key), iv);// กำลังอัปเดตข้อความถอดรหัสถอดรหัส ถอดรหัส =decipher.update(encryptedText); decrypted =Buffer.concat([decrypted, decipher.final()]);// ส่งคืนข้อมูลตอบกลับหลังจาก decryptionreturn decrypted.toString();}// การเข้ารหัสข้อมูลด้านล่างและการพิมพ์ outputvar output =encrypt("ยินดีต้อนรับสู่ TutorialsPoint!" );console.log("ข้อมูลที่เข้ารหัส -- ", เอาต์พุต);//การพิมพ์ dataconsole.log ที่ถอดรหัสแล้ว ("ข้อมูลที่ถอดรหัส -- ", ถอดรหัส (เอาต์พุต));

ผลลัพธ์

C:\home\node>> node createDecipheriv.jsEncrypted data -- { iv:'3fb2c84290e04d9bfb099bc65a7ac941',encryptedData:'4490777e90c5a78037cb92a99d561ae250562e2636af45901 --> ข้อมูลตอนรับที่เข้ารหัสแล้ว