Giải mã tiền điện tử NodeJS

Giải mã tiền điện tử NodeJS

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ản

Tạ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:
encrypted text af9efafd353a5a7e27f31262dac12d6b:eb1dd75ea6c84e25300d5a244138ab3c
Cách giải mã văn bản được mã hóa

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) => {
...
}
const text = "Hello World"
const pass = "secret1234"
const encText = encrypt(text, pass)
console.log('encrypted text', encText);
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

Trong bài viết này, bạn sẽ học cách sử dụng Node. js

const encrypt = (plainText, password) => {
...
}
const text = "Hello World"
const pass = "secret1234"
const encText = encrypt(text, pass)
console.log('encrypted text', encText);
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

Để đơ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) => {
...
}
const text = "Hello World"
const pass = "secret1234"
const encText = encrypt(text, pass)
console.log('encrypted text', encText);
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

Theo mặc định, mô-đun

const encrypt = (plainText, password) => {
...
}
const text = "Hello World"
const pass = "secret1234"
const encText = encrypt(text, pass)
console.log('encrypted text', encText);
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 encrypt = (plainText, password) => {
...
}
const text = "Hello World"
const pass = "secret1234"
const encText = encrypt(text, pass)
console.log('encrypted text', encText);
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

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ưới

tiền điện tử. js

const encrypt = (plainText, password) => {
...
}
const text = "Hello World"
const pass = "secret1234"
const encText = encrypt(text, pass)
console.log('encrypted text', encText);
0

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) => {
...
}
const text = "Hello World"
const pass = "secret1234"
const encText = encrypt(text, pass)
console.log('encrypted text', encText);
1

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) => {
...
}
const text = "Hello World"
const pass = "secret1234"
const encText = encrypt(text, pass)
console.log('encrypted text', encText);
2

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) => {
...
}
const text = "Hello World"
const pass = "secret1234"
const encText = encrypt(text, pass)
console.log('encrypted text', encText);
4, như minh họa trong ví dụ sau

dòng tiền điện tử. js

const encrypt = (plainText, password) => {
...
}
const text = "Hello World"
const pass = "secret1234"
const encText = encrypt(text, pass)
console.log('encrypted text', encText);
3

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

Làm cách nào để giải mã dữ liệu trong NodeJS?

Mã hóa và giải mã văn bản . /crypto') const hash = mã hóa('Xin chào thế giới. ') bảng điều khiển. nhật ký (băm) // { // iv. '237f306841bd23a418878792252ff6c8', // nội dung. 'e2da5c6073dd978991d8c7cd' // } const text = decrypt(hash) console. log(text) // Hello World.

Làm thế nào để giải mã mật mã?

Để giải mã/giải mã một tin nhắn được mã hóa, cần biết mã hóa được sử dụng (hoặc phương pháp mã hóa hoặc nguyên tắc mã hóa được triển khai). Without knowing the technique chosen by the sender of the message, it is impossible to decrypt it (or decode it).

Làm cách nào để giải mã bằng CryptoJS?

Đây là ví dụ được trích xuất từ ​​github của thư viện. .
var CryptoJS = require("crypto-js");
// Mã hóa
var ciphertext = CryptoJS. AES. mã hóa ('tin nhắn của tôi', 'khóa bí mật 123'). toString();
// Giải mã
byte = CryptoJS. AES. decrypt(bản mã, 'khóa bí mật 123');
var originalText = byte. toString(CryptoJS. enc. UTF8);

Làm cách nào để sử dụng tiền điện tử trong NodeJS?

Ví dụ mã hóa bằng mật mã .
const tiền điện tử = yêu cầu ('tiền điện tử');
mật mã const = tiền điện tử. createCipher('aes192', 'mật khẩu');
var mã hóa = mật mã. cập nhật ('Xin chào JavaTpoint', 'utf8', 'hex');
mã hóa += mật mã. cuối cùng ('hex');
bảng điều khiển. nhật ký (được mã hóa);