Blog's HuynhDN
  • Trang Chủ
  • Giới thiệu
  • Lập Trình
    • All
    • Nodejs
    • React
    Hướng dẫn cài đặt npm và node bằng nvm

    8 Node Frameworks đáng sử dụng năm 2019

    Node Red

    Một số ví dụ và ứng dụng của Node-RED

    Node Red

    Node-RED là gì? Làm thế nào để sử dụng nó cho Internet of Thing

    Study

    JavaScript: Callback là cái của nợ gì?

    Mã hoá và giải mã RSA trong nodejs

    Mã hoá và giải mã RSA trong nodejs

    Tạo sao chúng tôi đã chuyển từ Angular 2 to Vue js (và tại sao không chọn React)

    Tạo sao chúng tôi đã chuyển từ Angular 2 to Vue js (và tại sao không chọn React)

    Trending Tags

    • GIT
    • GITLAB
  • Hệ thống
    • All
    • Amazon Web Services
    • Docker
    • Google Cloud
    Ssl Https

    Cài đặt SSL và HTTPS free bằng Let’s Encrypt trên Nginx Centos 7

    Docker là gì?

    Các lệnh docker hay dùng

    Docker là gì?

    Các bài viết hay về Docker đáng tham khảo

  • Database
  • Bài viết khác
    • All
    • Agile
    • Chuyện bên lề
    Chan Code

    Làm gì khi chán code?

    Van Hoa Nghi Viec

    7 điều tâm niệm về văn hóa nghỉ việc từ cựu giám đốc nhân sự

    OKRs – Phương pháp đơn giản đã giúp Google đạt được mọi mục tiêu đặt ra

    OKRs – Phương pháp đơn giản đã giúp Google đạt được mọi mục tiêu đặt ra

    Tạo sao chúng tôi đã chuyển từ Angular 2 to Vue js (và tại sao không chọn React)

    Tạo sao chúng tôi đã chuyển từ Angular 2 to Vue js (và tại sao không chọn React)

    Scrum Cheat Sheet

    Scrum Cheat Sheet

    Địa ngục Coder

    Địa ngục Coder

    Trending Tags

    • Liên hệ
    No Result
    View All Result
    • Trang Chủ
    • Giới thiệu
    • Lập Trình
      • All
      • Nodejs
      • React
      Hướng dẫn cài đặt npm và node bằng nvm

      8 Node Frameworks đáng sử dụng năm 2019

      Node Red

      Một số ví dụ và ứng dụng của Node-RED

      Node Red

      Node-RED là gì? Làm thế nào để sử dụng nó cho Internet of Thing

      Study

      JavaScript: Callback là cái của nợ gì?

      Mã hoá và giải mã RSA trong nodejs

      Mã hoá và giải mã RSA trong nodejs

      Tạo sao chúng tôi đã chuyển từ Angular 2 to Vue js (và tại sao không chọn React)

      Tạo sao chúng tôi đã chuyển từ Angular 2 to Vue js (và tại sao không chọn React)

      Trending Tags

      • GIT
      • GITLAB
    • Hệ thống
      • All
      • Amazon Web Services
      • Docker
      • Google Cloud
      Ssl Https

      Cài đặt SSL và HTTPS free bằng Let’s Encrypt trên Nginx Centos 7

      Docker là gì?

      Các lệnh docker hay dùng

      Docker là gì?

      Các bài viết hay về Docker đáng tham khảo

    • Database
    • Bài viết khác
      • All
      • Agile
      • Chuyện bên lề
      Chan Code

      Làm gì khi chán code?

      Van Hoa Nghi Viec

      7 điều tâm niệm về văn hóa nghỉ việc từ cựu giám đốc nhân sự

      OKRs – Phương pháp đơn giản đã giúp Google đạt được mọi mục tiêu đặt ra

      OKRs – Phương pháp đơn giản đã giúp Google đạt được mọi mục tiêu đặt ra

      Tạo sao chúng tôi đã chuyển từ Angular 2 to Vue js (và tại sao không chọn React)

      Tạo sao chúng tôi đã chuyển từ Angular 2 to Vue js (và tại sao không chọn React)

      Scrum Cheat Sheet

      Scrum Cheat Sheet

      Địa ngục Coder

      Địa ngục Coder

      Trending Tags

      • Liên hệ
      No Result
      View All Result

      HuynhDN

      No Result
      View All Result
      Home Lập trình

      Mã hoá và giải mã RSA trong nodejs

      huynhdn by huynhdn
      30/12/2018
      in Lập trình, Nodejs
      0
      Mã hoá và giải mã RSA trong nodejs

      rsa

      0
      SHARES
      242
      VIEWS
      Share on FacebookShare on Twitter

      Mô-đun crypto cung cấp chức năng mã hóa bao gồm một tập hợp các hàm băm của OpenSSL, HMAC, cipher, decipher, sign, và verify functions. Dưới đây là 1 ví dụ về cách mã hoá và giải mã thuật toán RSA nhé!

      RSA là một thuật toánmật mã hóa khóa công khai. Đây là thuật toán đầu tiên phù hợp với việc tạo ra chữ ký điện tử đồng thời với việc mã hóa. Nó đánh dấu một sự tiến bộ vượt bậc của lĩnh vực mật mã học trong việc sử dụng khóa công cộng. RSA đang được sử dụng phổ biến trong thương mại điện tử và được cho là đảm bảo an toàn với điều kiện độ dài khóa đủ lớn.

      Demo như sau:

      Bước 1: Tạo cặp khoá private và public bằng câu lệnh. Mở Terminal lên và gõ lệnh sau:

      openssl genrsa -out private.pem 2048 -sha256

      Câu trên tạo ra cặp khóa RSA 2048 bit, mã hóa chúng bằng mật khẩu bạn cung cấp và ghi chúng vào một tệp private.pem. Sau đó dùng lệnh tiếp theo để tạo ra public key:

      openssl rsa -in private.pem -outform PEM -pubout -out public.pem

      Bước 2: Tạo 1 file encryption.js lên và code thôi:

      const crypto = require("crypto");
      const path = require("path");
      const fs = require("fs");
      
      const encryptStringWithRsaPublicKey = (toEncrypt, relativeOrAbsolutePathToPublicKey = './public.pem') => {
          const absolutePath = path.resolve(relativeOrAbsolutePathToPublicKey);
          const publicKey = fs.readFileSync(absolutePath, "utf8");
          const buffer = new Buffer(toEncrypt);
          const encrypted = crypto.publicEncrypt(publicKey, buffer);
          return encrypted.toString("base64");
      };
      
      const decryptStringWithRsaPrivateKey = (toDecrypt, relativeOrAbsolutePathtoPrivateKey = './private.pem') => {
          const absolutePath = path.resolve(relativeOrAbsolutePathtoPrivateKey);
          const privateKey = fs.readFileSync(absolutePath, "utf8");
          const buffer = new Buffer(toDecrypt, "base64");
          const decrypted = crypto.privateDecrypt(privateKey, buffer);
          return decrypted.toString("utf8");
      };
      
      module.exports = {
          encryptStringWithRsaPublicKey,
          decryptStringWithRsaPrivateKey
      }

      Vậy là ta đã có 1 hàm mã hoá bằng Public key và giải mã bằng Private key tương ứng.

      Bước 3: tạo 1 file index.js chạy thử

      const { encryptStringWithRsaPublicKey, decryptStringWithRsaPrivateKey } = require('./encryption');
      
      const text = 'abcd1234';
      const encrypt = encryptStringWithRsaPublicKey(text);
      console.log('ENCRYPT text: ', encrypt);
      const decrypt = decryptStringWithRsaPrivateKey(encrypt);
      console.log('DECRYPT text: ', decrypt);
      // output: ENCRYPT text: randomstring
      // output: DECRYPT text: text

      Tags: nodenodejsrsa
      Previous Post

      Quản lý log với Logstash, Elasticsearch, Kibana

      Next Post

      Cài đặt Docker trên MacOS

      huynhdn

      huynhdn

      Related Posts

      Hướng dẫn cài đặt npm và node bằng nvm
      Nodejs

      8 Node Frameworks đáng sử dụng năm 2019

      24/09/2019
      Node Red
      Nodejs

      Một số ví dụ và ứng dụng của Node-RED

      26/08/2019
      Node Red
      Nodejs

      Node-RED là gì? Làm thế nào để sử dụng nó cho Internet of Thing

      26/08/2019
      Study
      Lập trình

      JavaScript: Callback là cái của nợ gì?

      07/08/2019
      Tạo sao chúng tôi đã chuyển từ Angular 2 to Vue js (và tại sao không chọn React)
      Lập trình

      Tạo sao chúng tôi đã chuyển từ Angular 2 to Vue js (và tại sao không chọn React)

      20/06/2018
      HTTP là gì? so sánh http với https
      Lập trình

      HTTP là gì? so sánh http với https

      14/03/2018
      Next Post
      Docker là gì?

      Cài đặt Docker trên MacOS

      Trả lời Hủy

      Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

      Kết Nối với Tôi

      • 53 Fans
      • Trending
      • Comments
      • Latest
      ĐĂNG KÝ TÀI KHOẢN GOOGLE CLOUD NHẬN NGAY $300 DÙNG TRONG 12 THÁNG.

      ĐĂNG KÝ TÀI KHOẢN GOOGLE CLOUD NHẬN NGAY $300 DÙNG TRONG 12 THÁNG.

      29/03/2019
      ĐĂNG KÝ TÀI KHOẢN GOOGLE CLOUD NHẬN NGAY $300 DÙNG TRONG 12 THÁNG.

      Tạo VPS trên google cloud

      29/03/2019
      Node Red

      Node-RED là gì? Làm thế nào để sử dụng nó cho Internet of Thing

      26/08/2019
      Chan Code

      Làm gì khi chán code?

      0
      Tìm hiểu về Webpack

      Tìm hiểu về Webpack

      0
      Switch Role trong Amazon Web Services

      Switch Role trong Amazon Web Services

      0
      Chan Code

      Làm gì khi chán code?

      10/12/2019
      Ssl Https

      Cài đặt SSL và HTTPS free bằng Let’s Encrypt trên Nginx Centos 7

      18/11/2019
      Hướng dẫn cài đặt npm và node bằng nvm

      8 Node Frameworks đáng sử dụng năm 2019

      24/09/2019

      Recent News

      • All
      • Lập trình
      Chan Code

      Làm gì khi chán code?

      10/12/2019
      Ssl Https

      Cài đặt SSL và HTTPS free bằng Let’s Encrypt trên Nginx Centos 7

      18/11/2019
      Hướng dẫn cài đặt npm và node bằng nvm

      8 Node Frameworks đáng sử dụng năm 2019

      24/09/2019
      Docker là gì?

      Các lệnh docker hay dùng

      12/09/2019
      Một Blog của Đỗ Ngọc Huỳnh

      Tôi chỉ là 1 developer tập tành viết blog

      Kết nối với tôi

      Phản hồi gần đây

        Recent News

        Chan Code

        Làm gì khi chán code?

        10/12/2019
        Ssl Https

        Cài đặt SSL và HTTPS free bằng Let’s Encrypt trên Nginx Centos 7

        18/11/2019

        © 2019 Bản quyền thuộc về huynhdn.com

        No Result
        View All Result
        • Trang Chủ
        • Giới thiệu
        • Lập Trình
        • Hệ thống
        • Database
        • Bài viết khác
        • Liên hệ

        © 2019 Bản quyền thuộc về huynhdn.com