การเข้ารหัส (encrypt) และถอดรหัส (decrypt) ข้อมูลใน Node.js สามารถทำได้โดยใช้โมดูล crypto
ซึ่งมาพร้อมกับ Node.js ตามนี้เป็นตัวอย่างของวิธีการใช้งาน:
นำเข้าโมดูล
crypto
:ในโค้ดของคุณ ให้เริ่มต้นโดยการนำเข้าโมดูล
crypto
ด้วยคำสั่งrequire
:1
const crypto = require('crypto');
การเข้ารหัสข้อมูล (Encryption):
เพื่อเข้ารหัสข้อมูลใช้ฟังก์ชัน
crypto.createCipheriv()
เพื่อสร้างวัตถุ Cipher และหลังจากนั้นใช้update()
และfinal()
เพื่อเข้ารหัสข้อมูล:1
2
3
4
5
6
7
8
9
10const algorithm = 'aes-256-cbc'; // เลือกขั้นตอนการเข้ารหัสที่ต้องการ
const key = crypto.randomBytes(32); // สร้างกุญแจเริ่มต้น (ควรเก็บในสถานที่ปลอดภัย)
const iv = crypto.randomBytes(16); // สร้าง IV (Initialization Vector) เริ่มต้น (ควรเก็บในสถานที่ปลอดภัย)
const cipher = crypto.createCipheriv(algorithm, key, iv);
let encryptedData = cipher.update('ข้อมูลที่จะเข้ารหัส', 'utf8', 'hex');
encryptedData += cipher.final('hex');
console.log('ข้อมูลที่เข้ารหัส:', encryptedData);algorithm
คือ ขั้นตอนการเข้ารหัสที่คุณต้องการใช้ (เช่น'aes-256-cbc'
)key
คือ กุญแจเริ่มต้นที่ใช้ในการเข้ารหัส (ควรเก็บในสถานที่ปลอดภัย)iv
(Initialization Vector) ใช้ในขั้นตอนการเข้ารหัสเพื่อเพิ่มความปลอดภัย (ควรเก็บในสถานที่ปลอดภัย)
การถอดรหัสข้อมูล (Decryption):
เพื่อถอดรหัสข้อมูลใช้ฟังก์ชัน
crypto.createDecipheriv()
เพื่อสร้างวัตถุ Decipher และหลังจากนั้นใช้update()
และfinal()
เพื่อถอดรหัสข้อมูล:1
2
3
4
5
6const decipher = crypto.createDecipheriv(algorithm, key, iv);
let decryptedData = decipher.update(encryptedData, 'hex', 'utf8');
decryptedData += decipher.final('utf8');
console.log('ข้อมูลที่ถอดรหัส:', decryptedData);- ในตัวอย่างนี้
encryptedData
คือข้อมูลที่เข้ารหัสแล้ว (ที่คุณได้จากขั้นตอนการเข้ารหัส)
- ในตัวอย่างนี้
การจัดการข้อผิดพลาด:
ควรใส่การจัดการข้อผิดพลาดเมื่อมีปัญหาในขั้นตอนการเข้ารหัสหรือถอดรหัส โดยรับข้อผิดพลาดที่เกิดขึ้นในรูปแบบของ
try...catch
:1
2
3
4
5try {
// ขั้นตอนการเข้ารหัสหรือถอดรหัส
} catch (error) {
console.error('เกิดข้อผิดพลาด:', error);
}
โปรดทราบว่าเวลาที่คุณใช้ crypto.randomBytes()
เพื่อสร้างกุญแจและ IV ควรจะเก็บค่าเหล่านี้ในสถานที่ปลอดภัยเนื่องจากจะใช้ในการถอดรหัสข้อมูลในภายหลัง และคุณควรใช้กุญแจที่แข็งแกร่งมากเท่าที่จะเป็นไปได้สำหรับการเข้ารหัสและถอดรหัสข้อมูลที่มีความสำคัญ.