alex adam
Theo
Ngày 21 tháng 8 năm 2021
·
1 phút đọc
Mã hóa và giải mã trong NodeJS
Cách mã hóa văn bảnTạo một tệp có tên encdec. js và dán
const crypto = require["crypto"]const encrypt = [plainText, password] => {
try {
const iv = crypto.randomBytes[16];
const key = crypto.createHash['sha256'].update[password].digest['base64'].substr[0, 32];
const cipher = crypto.createCipheriv['aes-256-cbc', key, iv]; let encrypted = cipher.update[plainText];
encrypted = Buffer.concat[[encrypted, cipher.final[]]]
return iv.toString['hex'] + ':' + encrypted.toString['hex']; } catch [error] {
console.log[error];
}
}
Hãy kiểm tra nó
Nối những dòng này
const encrypt = [plainText, password] => {
...
}const text = "Hello World"
const pass = "secret1234"const encText = encrypt[text, pass]
console.log['encrypted text', encText];
Sau đó chạy
node encdec.js# Output:Cách giải mã văn bản được mã hóa
encrypted text af9efafd353a5a7e27f31262dac12d6b:eb1dd75ea6c84e25300d5a244138ab3c
Thêm chức năng giải mã
const decrypt = [encryptedText, password] => {
try {
const textParts = encryptedText.split[':'];
const iv = Buffer.from[textParts.shift[], 'hex']; const encryptedData = Buffer.from[textParts.join[':'], 'hex'];
const key = crypto.createHash['sha256'].update[password].digest['base64'].substr[0, 32];
const decipher = crypto.createDecipheriv['aes-256-cbc', key, iv];
const decrypted = decipher.update[encryptedData];
const decryptedText = Buffer.concat[[decrypted, decipher.final[]]];
return decryptedText.toString[];
} catch [error] {
console.log[error]
}
}
Và một bài kiểm tra
const text = "Hello World"
const pass = "secret1234"const encText = encrypt[text, pass]
console.log['encrypted text', encText];const decText = decrypt[encText, pass]
console.log['decrypted text', decText];
Sau đó chạy
node encdec.js# Output
encrypted text 71596b9f5a99532f438fc5669b845680:248f6cb24a4ebeb174bbb73953115fd5
decrypted text Hello World
Nguồn. https. //ý chính. github. com/vlucas/2bd40f62d20c1d49237a109d491974eb
Nút. js cung cấp một mô-đun tích hợp có tên là
const encrypt = [plainText, password] => {4 mà bạn có thể sử dụng để mã hóa và giải mã các chuỗi, số, bộ đệm, luồng, v.v. Mô-đun này cung cấp chức năng mã hóa bao gồm một bộ trình bao bọc cho hàm băm, HMAC, mật mã, giải mã, ký và xác minh của OpenSSL
...
}const text = "Hello World"
const pass = "secret1234"const encText = encrypt[text, pass]
console.log['encrypted text', encText];
Trong bài viết này, bạn sẽ học cách sử dụng Node. js
const encrypt = [plainText, password] => {4 để thực hiện các thao tác mã hóa trên dữ liệu. Tôi sẽ chỉ cho bạn cách mã hóa dữ liệu bằng khóa bí mật và sau đó giải mã bằng chính khóa bí mật đó khi được yêu cầu
...
}const text = "Hello World"
const pass = "secret1234"const encText = encrypt[text, pass]
console.log['encrypted text', encText];
Để đơn giản, tôi sẽ sử dụng thuật toán AES [Advanced Encryption System] chế độ mã hóa CTR. Đây là một cuộc thảo luận hay về StackOverflow để chọn chế độ mã hóa AES chính xác
Tạo một dự án mới
Tạo một thư mục mới trong hệ thống tệp cục bộ của bạn và chuyển sang thư mục đó bằng cách nhập nội dung sau
$ mkdir crypto && cd crypto
Bây giờ hãy thực hiện lệnh sau để khởi tạo một Nút mới. dự án js
$ npm init -y
Lệnh trên sẽ tạo một tệp
const encrypt = [plainText, password] => {6 mới trong thư mục gốc. Đảm bảo rằng bạn đã cài đặt Node. js trên máy của bạn trước khi thực hiện lệnh trên
...
}const text = "Hello World"
const pass = "secret1234"const encText = encrypt[text, pass]
console.log['encrypted text', encText];
Theo mặc định, mô-đun
const encrypt = [plainText, password] => {4 đã được bao gồm trong Nút dựng sẵn. js nhị phân. Nhưng nếu bạn đã cài đặt thủ công Node. js,
...
}const text = "Hello World"
const pass = "secret1234"const encText = encrypt[text, pass]
console.log['encrypted text', encText];
const encrypt = [plainText, password] => {4 có thể không được vận chuyển cùng với nó. Tuy nhiên, bạn có thể cài đặt nó bằng cách thực hiện lệnh sau________số 8
...
}const text = "Hello World"
const pass = "secret1234"const encText = encrypt[text, pass]
console.log['encrypted text', encText];
Mã hóa và giải mã văn bản
Hãy để chúng tôi tạo tệp
$ npm init -y
2 trong thư mục gốc của dự án và xác định các chức năng mã hóa và giải mã của chúng tôi như bên dướitiền điện tử. js
const encrypt = [plainText, password] => {0
...
}const text = "Hello World"
const pass = "secret1234"const encText = encrypt[text, pass]
console.log['encrypted text', encText];
Ví dụ sau minh họa cách bạn có thể mã hóa và giải mã dữ liệu văn bản [chuỗi, số, v.v. ] bằng cách sử dụng các chức năng trên
văn bản tiền điện tử. js
const encrypt = [plainText, password] => {1
...
}const text = "Hello World"
const pass = "secret1234"const encText = encrypt[text, pass]
console.log['encrypted text', encText];
Mã hóa và giải mã bộ đệm
Bạn cũng có thể mã hóa và giải mã bộ đệm bằng cách sử dụng các chức năng được xác định ở trên. Chỉ cần chuyển bộ đệm thay cho chuỗi và nó sẽ hoạt động
bộ đệm tiền điện tử. js
const encrypt = [plainText, password] => {2
...
}const text = "Hello World"
const pass = "secret1234"const encText = encrypt[text, pass]
console.log['encrypted text', encText];
Mã hóa và giải mã luồng
Bạn cũng có thể mã hóa và giải mã các luồng bằng cách sử dụng mô-đun
const encrypt = [plainText, password] => {4, như minh họa trong ví dụ sau
...
}const text = "Hello World"
const pass = "secret1234"const encText = encrypt[text, pass]
console.log['encrypted text', encText];
dòng tiền điện tử. js
const encrypt = [plainText, password] => {3
...
}const text = "Hello World"
const pass = "secret1234"const encText = encrypt[text, pass]
console.log['encrypted text', encText];
Mã nguồn. Tải xuống mã nguồn hoàn chỉnh của dự án này từ GitHub, có sẵn theo giấy phép MIT
Phần kết luận
Trong bài viết này, chúng tôi đã xem xét cách thực hiện các thao tác mã hóa trên văn bản, bộ đệm và luồng bằng cách sử dụng Nút. mô-đun tiền điện tử tích hợp js. Điều này cực kỳ hữu ích nếu bạn cần mã hóa dữ liệu nhạy cảm như khóa bí mật trước khi lưu trữ chúng trong cơ sở dữ liệu