CĂN BẢN
SERVER
MYSQL
MONGODB
MODULE
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Mã hóa chuỗi trong NodeJS với module CryptTo-JS

Đôi khi bạn muốn mã hóa thông tin trước khi lưu vào cơ sở dữ liệu để thông tin được an toàn hơn. Ví dụ khi bạn thiết lập mật khẩu cho User thì bạn phải mã hóa chuỗi mật khẩu đó rồi mới lưu vào CSDL, từ đó khi đăng nhập thì ta sẽ so sánh chuỗi đã mã hóa thay vì so sánh mật khẩu chưa mã hóa.

Trong NodeJS có một module hỗ trợ rất tốt chức năng này đó là module crypto-js, vì vậy trong bài này chúng ta sẽ tìm hiểu cách sử dụng module này.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Cài đặt module Crypto-js trong NodeJS

Để cài đặt Crypto lên Server thì bạn sử dụng npm và chạy đoạn code sau:

npm install crypto-js

Sau khi cài đặt xong là bạn có thể sử dụng ngay.

Để cài đặt tại Client thì bạn sử dụng Bower và chạy đoạn code sau:

bower install crypto-js

Riêng đôi với trường hợp sử dụng Bower thì chúng ta sẽ tìm hiểu sau.

2. Cách sử dụng module Crypto để mã hóa chuỗi

Trong Crypto có rất nhiều module riêng và mỗi module là một loại mã hóa khác nhau. Trong phần này mình sẽ demo một số module để các bạn hiểu nguyên tắc sử dụng. Chúng ta sẽ phân chia thành cách sử dụng ở backend và frontend, nhưng trong bài này chúng ta chỉ học cách sử dụng tại backend thôi nhé.

Bước 1: Tạo mới đối tượng CryptoJS

var crypto = require('crypto-js');

Bước 2: Mã hóa (Encrypt)

var crypto = require('crypto-js');

// Mã hóa
var message = crypto.AES.encrypt('Nội dung cần mã hóa', 'itsasecret123').toString();

// Xem chuỗi đã mã hóa
console.log(message);

Sau khi chạy lên bạn sẽ thấy giao diện như sau:

scrypto js nodejs png

Bước 3: Giải mã (Decrypt)

var crypto = require('crypto-js');

// Mã hóa
var message = crypto.AES.encrypt('Noi dung can ma hoa', 'ma bi mat').toString();

// Xem chuỗi đã mã hóa
console.log(message);

// Lấy danh sách byte đã mã hóa
var bytes = crypto.AES.decrypt(message, 'ma bi mat');

// Chuyển sang chuỗi gốc
var message_decode = bytes.toString(crypto.enc.Utf8);

console.log(message_decode);

Chạy lên giao diện sẽ như sau:

scrypto js nodejs 01 png

3. Danh sách các loại mã hóa của Crypto

Trong phần 2 mình chỉ sử dụng mỗi module AES chứ thực ra nó còn mấy chục module mã khóa khác nhau nữa. Và sau đây là danh sách các module mời các bạn tham khảo nhé.

  • crypto-js/core
  • crypto-js/x64-core
  • crypto-js/lib-typedarrays
  • crypto-js/md5
  • crypto-js/sha1
  • crypto-js/sha256
  • crypto-js/sha224
  • crypto-js/sha512
  • crypto-js/sha384
  • crypto-js/sha3
  • crypto-js/ripemd160
  • crypto-js/hmac-md5
  • crypto-js/hmac-sha1
  • crypto-js/hmac-sha256
  • crypto-js/hmac-sha224
  • crypto-js/hmac-sha512
  • crypto-js/hmac-sha384
  • crypto-js/hmac-sha3
  • crypto-js/hmac-ripemd160
  • crypto-js/pbkdf2
  • crypto-js/aes
  • crypto-js/tripledes
  • crypto-js/rc4
  • crypto-js/rabbit
  • crypto-js/rabbit-legacy
  • crypto-js/evpkdf
  • crypto-js/format-openssl
  • crypto-js/format-hex
  • crypto-js/enc-latin1
  • crypto-js/enc-utf8
  • crypto-js/enc-hex
  • crypto-js/enc-utf16
  • crypto-js/enc-base64
  • crypto-js/mode-cfb
  • crypto-js/mode-ctr
  • crypto-js/mode-ctr-gladman
  • crypto-js/mode-ofb
  • crypto-js/mode-ecb
  • crypto-js/pad-pkcs7
  • crypto-js/pad-ansix923
  • crypto-js/pad-iso10126
  • crypto-js/pad-iso97971
  • crypto-js/pad-zeropadding
  • crypto-js/pad-nopadding

Trong quá trình lập trình chúng ta sẽ đụng đến các module này, vì vậy tạm thời chúng ta sẽ không tìm hiểu.

4. Lời kết

Như vậy trong NodeJS có cung cấp cho chúng ta một module mã hóa chuỗi rất là tuyệt vời phải không các bạn, hy vọng tới bài thứ 12 này các bạn sẽ yêu thích NodeJS nhiều hơn nữa. Bài này mình sẽ dừng ở đây, bài tiếp theo chúng ta tìm hiểu về cách quản lý lỗi trong NodeJS.

Cùng chuyên mục:

Crawl dữ liệu website bằng NodeJS cơ bản

Crawl dữ liệu website bằng NodeJS cơ bản

CORS là gì ? Xử lý CORS trong NodeJS

CORS là gì ? Xử lý CORS trong NodeJS

Chắc hẳn trong quá trình xử lý các request tới server thì một vài trường…

Xử lý form trong Express

Xử lý form trong Express

Xây dựng URL trong Express

Xây dựng URL trong Express

Trong bài viết này chúng ta sẽ cùng nhau đi tìm hiểu về cách xây…

Populate trong Mongoose

Populate trong Mongoose

Error Handling & Debugging trong Socket.io

Error Handling & Debugging trong Socket.io

Namespaces & Rooms trong Socket.io

Namespaces & Rooms trong Socket.io

Middleware trong Mongoose

Middleware trong Mongoose

Create / Read / Update / Delete trong Mongoose

Create / Read / Update / Delete trong Mongoose

Validation trong Mongoose

Validation trong Mongoose

Subdocuments trong Mongooose

Subdocuments trong Mongooose

Documents trong Mongoose

Documents trong Mongoose

Trong bài viết này chúng ta sẽ tìm hiểu về documents trong Mongoose

Models trong Mongoose

Models trong Mongoose

SchemaTypes trong Mongoose

SchemaTypes trong Mongoose

Schemas trong Mongoose

Schemas trong Mongoose

Mongoose trong NodeJS

Mongoose trong NodeJS

Làm việc với Table MySQL sử dụng Nodejs

Làm việc với Table MySQL sử dụng Nodejs

Kết nối với MongoDB trong NodeJS

Kết nối với MongoDB trong NodeJS

Giới thiệu MongoDB trong NodeJS

Giới thiệu MongoDB trong NodeJS

Insert / Update / Delete / Select MySQL trong NodeJS

Insert / Update / Delete / Select MySQL trong NodeJS

Top