Module Crypto Node.js hỗ trợ mật mã. Nó cung cấp chức năng mật mã bao gồm một tập hợp các trình bao bọc cho các hàm băm HMAC, mật mã, giải mã, ký và xác minh của SSL mở.
Các bài viết liên quan:
Giới thiệu về Module Node.js Crypto
Module Node.js Crypto là một module tích hợp sẵn trong Node.js, cung cấp các chức năng mã hóa, giải mã, tạo chữ ký số, xác minh và xử lý mã băm. Nó cho phép bạn thực hiện các hoạt động bảo mật và mã hóa dữ liệu trong ứng dụng Node.js của mình.
Module Node.js Crypto sử dụng các thuật toán mã hóa và băm được hỗ trợ bởi thư viện OpenSSL. Nó cung cấp một tập hợp các lớp và phương thức để thực hiện các chức năng bảo mật như mã hóa dữ liệu, giải mã, tạo và xác minh chữ ký số, tạo và xử lý mã băm.
Các chức năng chính của Module Node.js Crypto bao gồm:
- Mã hóa và giải mã: Cho phép mã hóa và giải mã dữ liệu bằng các thuật toán mã hóa như AES, DES, RSA, v.v.
- Tạo chữ ký số và xác minh: Cho phép tạo chữ ký số dựa trên khóa riêng và xác minh chữ ký số bằng khóa công khai.
- Tạo và xử lý mã băm: Cho phép tạo mã băm dữ liệu sử dụng các thuật toán như SHA-1, SHA-256, MD5, v.v.
Module Node.js Crypto rất hữu ích khi bạn cần thực hiện các hoạt động bảo mật trong ứng dụng Node.js, bao gồm việc mã hóa và giải mã thông tin nhạy cảm, xác minh tính toàn vẹn của dữ liệu, và xác thực nguồn gốc của thông tin. Nó giúp bảo vệ dữ liệu và đảm bảo tính bảo mật trong quá trình truyền thông và lưu trữ dữ liệu.
Xem thêm Module web trong Node.js
Các chức năng chính của Node.js Crypto
Module Node.js Crypto cung cấp một số chức năng chính để thực hiện các tác vụ bảo mật và mã hóa trong ứng dụng Node.js của bạn. Dưới đây là một số chức năng chính của module này:
- Mã hóa và giải mã:
- Tạo đối tượng mã hóa và giải mã với các thuật toán mã hóa như AES, DES, RSA, v.v.
- Mã hóa và giải mã các dữ liệu văn bản hoặc dữ liệu nhị phân.
- Tạo chữ ký số và xác minh:
- Tạo chữ ký số sử dụng các thuật toán mã hóa khóa riêng như RSA, DSA, ECDSA, v.v.
- Xác minh tính hợp lệ của chữ ký số bằng cách sử dụng khóa công khai tương ứng.
- Tạo và xử lý mã băm:
- Tạo mã băm của dữ liệu sử dụng các thuật toán mã băm như SHA-1, SHA-256, MD5, v.v.
- Kiểm tra tính toàn vẹn của dữ liệu bằng cách so sánh mã băm.
- Tạo và quản lý khóa:
- Tạo khóa bằng cách sử dụng các thuật toán khóa công khai hoặc khóa bí mật.
- Lưu trữ và quản lý khóa trong các định dạng khóa chuẩn như PEM, DER, v.v.
- Xử lý băm và mật mã:
- Thực hiện các phép toán băm, mã hóa và giải mã trực tiếp trên dữ liệu.
Module Node.js Crypto cung cấp các lớp, phương thức và thuật toán để thực hiện các chức năng trên. Bạn có thể tìm hiểu thêm về cách sử dụng cụ thể và các ví dụ chi tiết trong tài liệu chính thức của Node.js.
Xem thêm Node.js Package Manager
Sử dụng Node.js Crypto
Để sử dụng Module Node.js Crypto, bạn cần import nó vào ứng dụng của mình. Dưới đây là một số ví dụ về cách sử dụng các chức năng chính của Module Node.js Crypto:
- Mã hóa và giải mã:
const crypto = require('crypto'); const algorithm = 'aes-256-cbc'; const key = 'my-secret-key'; const iv = 'my-iv'; // Mã hóa dữ liệu const cipher = crypto.createCipheriv(algorithm, key, iv); let encryptedData = cipher.update('Hello, World!', 'utf8', 'hex'); encryptedData += cipher.final('hex'); console.log('Dữ liệu đã được mã hóa:', encryptedData); // Giải mã dữ liệu const decipher = crypto.createDecipheriv(algorithm, key, iv); let decryptedData = decipher.update(encryptedData, 'hex', 'utf8'); decryptedData += decipher.final('utf8'); console.log('Dữ liệu đã được giải mã:', decryptedData);
- Tạo chữ ký số và xác minh:
const crypto = require('crypto'); const privateKey = crypto.generatePrivateKey({ keyType: 'rsa', modulusLength: 2048, }); const data = 'Hello, World!'; // Tạo chữ ký số const sign = crypto.createSign('RSA-SHA256'); sign.update(data); const signature = sign.sign(privateKey, 'hex'); console.log('Chữ ký số:', signature); // Xác minh chữ ký số const publicKey = privateKey.export({ type: 'pkcs1', format: 'pem' }); const verify = crypto.createVerify('RSA-SHA256'); verify.update(data); const isVerified = verify.verify(publicKey, signature, 'hex'); console.log('Xác minh chữ ký số:', isVerified);
- Tạo và xử lý mã băm:
const crypto = require('crypto'); const data = 'Hello, World!'; // Tạo mã băm const hash = crypto.createHash('sha256'); hash.update(data); const hashedData = hash.digest('hex'); console.log('Mã băm:', hashedData);
Đây chỉ là một số ví dụ cơ bản về cách sử dụng Node.js Crypto. Module này cung cấp nhiều chức năng khác nhau để làm việc với bảo mật và mã hóa trong Node.js. Bạn có thể tìm hiểu thêm về các phương thức và thuật toán khác trong tài liệu chính thức của Node.js.
Xem thêm Hàm băm (hash function) là gì?
Ví dụ về sử dụng Node.js Crypto
Ví dụ về mã hóa sử dụng Hash và HMAC
File: crypto_example1.js
const crypto = require('crypto'); const secret = 'key'; const hash = crypto.createHmac('sha256', secret) .update('Welcome to nodejs') .digest('hex'); console.log(hash);
Mở dấu nhắc lệnh Node.js và chạy đoạn mã sau:
node crypto_example1.js
Ví dụ về mã hóa bằng Cipher
File: crypto_example2.js
const crypto = require('crypto'); const cipher = crypto.createCipher('aes192', 'passwordkey'); var encrypted = cipher.update('Hello nodejs', 'utf8', 'hex'); encrypted += cipher.final('hex'); console.log(encrypted);
Mở dấu nhắc lệnh Node.js và chạy đoạn mã sau:
node crypto_example2.js
Ví dụ giải mã bằng Decipher
File: crypto_example3.js
const crypto = require('crypto'); const decipher = crypto.createDecipher('aes192', 'passwordkey'); var encrypted = '4ce3b761d58398aed30d5af898a0656a3174d9c7d7502e781e83cf6b9fb836d5'; var decrypted = decipher.update(encrypted, 'hex', 'utf8'); decrypted += decipher.final('utf8'); console.log(decrypted);
Mở dấu nhắc lệnh Node.js và chạy đoạn mã sau:
node crypto_example3.js
Mã hóa và giải mã:
const crypto = require('crypto'); const algorithm = 'aes-256-cbc'; const key = 'my-secret-key'; const iv = 'my-iv'; const plaintext = 'Hello, World!'; // Mã hóa dữ liệu const cipher = crypto.createCipheriv(algorithm, key, iv); let encryptedData = cipher.update(plaintext, 'utf8', 'hex'); encryptedData += cipher.final('hex'); console.log('Dữ liệu đã được mã hóa:', encryptedData); // Giải mã dữ liệu const decipher = crypto.createDecipheriv(algorithm, key, iv); let decryptedData = decipher.update(encryptedData, 'hex', 'utf8'); decryptedData += decipher.final('utf8'); console.log('Dữ liệu đã được giải mã:', decryptedData);
Xem thêm Node.js Net
Tạo chữ ký số và xác minh:
const crypto = require('crypto'); const data = 'Hello, World!'; const privateKey = crypto.generatePrivateKey({ keyType: 'rsa', modulusLength: 2048, }); // Tạo chữ ký số const sign = crypto.createSign('RSA-SHA256'); sign.update(data); const signature = sign.sign(privateKey, 'hex'); console.log('Chữ ký số:', signature); // Xác minh chữ ký số const publicKey = privateKey.export({ type: 'pkcs1', format: 'pem' }); const verify = crypto.createVerify('RSA-SHA256'); verify.update(data); const isVerified = verify.verify(publicKey, signature, 'hex'); console.log('Xác minh chữ ký số:', isVerified);
Tạo và xử lý mã băm:
const crypto = require('crypto'); const data = 'Hello, World!'; // Tạo mã băm const hash = crypto.createHash('sha256'); hash.update(data); const hashedData = hash.digest('hex'); console.log('Mã băm:', hashedData);
Đây chỉ là một số ví dụ cơ bản về cách sử dụng Module Node.js Crypto. Module này cung cấp nhiều chức năng khác nhau để làm việc với bảo mật và mã hóa trong Node.js. Bạn có thể tìm hiểu thêm về các phương thức và thuật toán khác trong tài liệu chính thức của Node.js.
Xem thêm “const” trong javascript là gì ?