- vừa được xem lúc

Nhật ký tự học BE: Ngày 4 - HS256 và RS256

0 0 3

Người đăng: Nguyễn Văn Biên

Theo Viblo Asia

HCM, ngày 23/3/2025

Tiếp tục với Authentication, như mình có trình bày ở bài trước, JWT có 2 cách mã hoá phổ biến là HS256 và RS256. Vậy chính xác thì 2 thứ này là gì?

HS256 (HMAC SHA-256)

  • HS256 là thuật toán mã hoá dựa trên HMAC (Hash-based Message Authentication Code) kết hợp với hàm băm SHA-256.
  • Sử dụng chung 1 secret key để vừa ký (sign) và xác thực (verify).

Ưu điểm:

  • Đơn giản hơn RS256: Chỉ cần 1 secret key để sign & verify.
  • Nhanh: HS256 có hiệu suất tốt, phù hợp với hệ thống nhỏ hoặc đơn giản

Nhược điểm:

  • Ít bảo mật hơn RS256: Vì dùng chung secret key, nếu bị lộ thì hacker có thể tạo token giả mạo.
  • Không phù hợp với hệ thống phân tán: Nếu nhiều server dùng chung secret key, việc chia sẻ key an toàn là một thách thức.

RS256 (RSA SHA-256)

  • RS256 là thuật toán mã hoá dựa trên RSA (đặt theo tên bởi 3 nhà phát minh là Ron Rivest, Adi Shamir và Leonard Adleman) kết hợp với hàm băm SHA-256.
  • Sử dụng cặp khoá private key để ký và public key để xác thực.

Ưu điểm:

  • Bảo mật hơn & phù hợp với hệ thống phân tán: Vì private key chỉ được lưu ở server ký token, còn public key có thể chia sẻ công khai mà không ảnh hưởng tới bảo mật.

Nhược điểm:

  • Phức tạp hơn: Cần tạo & quản lý cặp khoá public/private key
  • Chậm hơn.

Băm (hash) là gì? Tại sao thường được dùng trong DSA?

Hash là một quá trình chuyển đổi input đầu vào thành một output đầu ra có độ dài cố định. Output này thường được gọi là hash value, còn quá trình chuyển đổi sẽ sử dụng những hàm băm (hash function). Hash được sử dụng cực kỳ phổ biến, đặc biệt trong các trường hợp như là xác thực dữ liệu hay bảo mật.

Một số đặc điểm:

  • Output có độ dài cố định.
  • Hiệu suất cao với độ phức tạp thời gian thường là O(1).
  • Một chiều (one-way): Từ output không thể truy ngược lại input. Đây là lý do hash thường được dùng để lưu mật khẩu hash value.

Một số hàm băm phổ biến:

  • MD5
  • SHA-1
  • SHA-256
  • SHA-3
  • Bcrypt

Bình luận

Bài viết tương tự

- vừa được xem lúc

Có thực sự an toàn với Authentication và Authorization , mật khẩu có nên lưu ở dạng text ?

Có thực sự an toàn với Authentication và Authorization , mật khẩu có nên lưu ở dạng text . Hơn nữa, vì chúng ta đang lưu trữ thông tin đăng nhập và hỗ trợ quy trình đăng nhập, chúng ta biết rằng sẽ có thông tin xác thực được gửi qua hạ tầng mạng.

0 0 60

- vừa được xem lúc

Login LINE với Firebase Authentication

Ngày nay, khi sử dụng một dịch vụ online online, chúng ta có xu hướng sử dụng một tài khoản liên kết (Google, Facebook, Twitter... tạm gọi là bên thứ 3) để đăng nhập vào dịch vụ đó thay vì cứ mỗi một dịch vụ, ta lại tạo một account/passord riêng. Lúc này Firebase Authentication (từ đây sẽ gọi tắt là

0 0 47

- vừa được xem lúc

Bài 17: Phân quyền trong Laravel

Chào mừng các bạn quay trở lại với series học Laravel với VueJS của mình, ở bài này mình sẽ hướng dẫn các bạn các phân quyền bằng Laravel và VueJS mà không cần cài đặt thêm bất kì package hay library

0 0 99

- vừa được xem lúc

Phân biệt sự khác nhau giữa Authentication và Authorization

Có lẽ trong quá trình lập trình bạn đã được nghe rất nhiều về 2 khái niệm authentication và authorization nhưng liệu bạn đã phân biệt được sự khác nhau giữa 2 khái niệm này? hay đôi khi bạn vẫn mập mờ

0 0 54

- vừa được xem lúc

[Node JS + React JS] - Phần 2 - Authentication server

Hôm nay chúng ta sẽ tiếp tục serie Node JS + React JS với chủ đề là authentication + authorization. Hôm nay chúng ta cùng đi tìm hiểu hai khái niệm cơ bản là Authentication và Authorization, cũng như

0 0 411

- vừa được xem lúc

API với Postman (Phần 3)

Sau 2 bài viết, chúng ta đã hiểu thế nào là client và server, cách chúng sử dụng HTTP để nói chuyện với nhau và việc xác định định dạng dữ liệu để hiểu nhau. Có lẽ trong đầu chúng ta sẽ có câu hỏi: Là

0 0 88