325 lượt xem

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ở tài liệu để thông tin được bảo đảm 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 .

test php

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.

Trong NodeJS có một module tương hỗ rất tốt tính năng này đó là module crypto-js, thế cho nên trong bài này tất cả chúng ta sẽ khám phá cách sử dụng module này .

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

Để thiết lập Crypto lên Server thì bạn sử dụng npm và chạy đoạn code sau :

npm install crypto-js

Sau khi setup xong là bạn hoàn toàn có thể sử dụng ngay .
Để setup 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ì tất cả chúng ta sẽ khám phá 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ố ít module để những bạn hiểu nguyên tắc sử dụng. Chúng ta sẽ phân loại thành cách sử dụng ở backend và frontend, nhưng trong bài này tất cả 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 quy trình lập trình tất cả chúng ta sẽ đụng đến những module này, vì thế trong thời điểm tạm thời tất cả chúng ta sẽ không khám phá .

4. Lời kết

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

Source: https://trade.edu.vn
Category: Blockchain

Vote sao

Trả lời

Email của bạn sẽ không được hiển thị công khai.