03/08/2018, 10:22

Bài 12: 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 ...

Đô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.

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:

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:

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.

-------------------#####-------------------

DOWNLOAD TÀI LIỆU NODEJS

BÀI KẾ SAU
BÀI KẾ TIẾP

Nguồn: code24h.com

Bài liên quan

Bài 12: Toán tử UNION trong MySQL

Toán tử MySQL UNION cho phép bạn kết hợp hai hay nhiều kết quả từ nhiều bảng vào một kết quả. Cú pháp: SELECT column1, column2 UNION [DISTINCT | ALL] SELECT column1, column2 UNION [DISTINCT | ALL] … Một số quy tắc bạn cần phải tuân theo khi sử dụng toán tử MySQL UNION. Số lượng ...

Bùi Văn Nam viết 3 tuần trước

Đã phát hiện kỹ thuật phá giao thức mã hóa RC4 trong WPA-TKIP và TLS?

Các nhà nghiên cứu bảo mật đã phát triển một kỹ thuật thực tế và khả thi có khả năng tấn công các thuật toán mã hóa RC4, hiện vẫn được sử dụng rộng rãi để mã hóa thông tin trên Internet. Mặc dù đã tồn tại từ rất lâu, nhưng RC4 (Rivest Cipher 4) vẫn là thuật toán mã hóa mật mã được sử dụng rộng ...

Hoàng Hải Đăng viết 23:14 ngày 17/09/2018

Mã hóa chuỗi Unicode

Cần giúp đỡ: Giả sử đầu vào mình có chuổi như sau: $str1='ăắằẳẵặ'; Làm sao để echo từng ký tự mà không bị mã hóa? Ví dụ: echo $str[0]; // hiển thị ă echo $str[1]; // hiển thị ắ echo $str[2]; // hiển thị ằ Xin chỉ giúp , mình echo toàn ra ? hoặc dấu tam giác. Thanks

Vũ Văn Thanh viết 10:53 ngày 07/09/2018

Bắt đầu làm quen với mã hóa string trong ruby

Trong công nghệ thông tin (đặc biệt là lĩnh vực phần mềm và công nghệ) của ngày nay, chúng ta thấy thông tin ở dạng text ở mọi nơi. Text không được cung cấp cho chúng ta ở định dạng đa phương tiện như hình ảnh và video mà nó được lưu trữ nội bộ trong máy tính dưới dạng các con số có mã hóa. Điều đó ...

Hoàng Hải Đăng viết 09:55 ngày 07/09/2018

Bài 12: Cách tạo Page trong WordPress

Bkasoft.net – Page trong WordPress là gì ? Bài hướng dẫn này mình sẽ giải thích rõ cho các bạn về tạo một page và mục đích tạo page trong WordPress Để thống nhất cách học, các bạn cần biết tạo một Page chính là tạo một trang, mình sẽ dùng ngôn từ tiếng Việt cho dễ hiểu. Vậy tạo một bài ...

Hoàng Hải Đăng viết 16:51 ngày 04/09/2018
0