Bcrypt là gì? Cách sử dụng bcrypt để mã hóa mật khẩu

Bcrypt là một chức năng mã hóa mật khẩu  thiết kế bởi Niels Provos và David Mazières, dựa trên các thuật toán mã hóa Blowfish, và trình bày tại USENIX trong năm 1999.Bcrypt là một nền tảng tập tin tiện ích mã hóa chéo. File mã hóa  trên tất cả các hệ điều hành hỗ trợ và xử lý. Passphrase phải từ 8 đến 56 ký tự và được mã hóa trong nội bộ một khóa 448 bit.Bcrypt là một thuật toán mã hóa một chiều. Bạn không thể lấy lại mật khẩu khi đã biết chuỗi mật khẩu trong dữ liệu databse trước đó mà bạn hay bất kỳ ai tấn công vào để đánh cắp.

Bcrypt sử dụng thuật toán mã hóa blowfish xuất bản bởi Bruce Schneier vào năm 1993.

Đa số chúng ta khi  xây dựng một ứng dụng web hoặc một ứng dụng liên quan tới việc xử lý đăng nhập hay xác thực người dùng thì đều  sử dụng các dạng mã hóa như MD5/SHA,SHA1… để lưu trữ mật khẩu,các dạng mã hóa này tương đối bảo mật nhưng nó quá quen thuộc với hacker,tuy nhiên các dạng mã hóa trên theo cố định.Ví dụ : 123456 thì theo một dạng mã hóa md5 là e10adc3949ba59abbe56e057f20f883e.Để tăng độ an toàn và tính bảo mật cho ngườ dùng tốt hơn thì Bcrypt là một giải pháp được ưa chuộng trong cộng đồng an ninh hiện nay. Dạng mã hóa bcrypt nó được coi là bảo mật cao cho nhu cầu hiện nay.

Vì sao lại bảo mật hơn?

Bcrypt nó tự động tạo ra các chuỗi mã hóa ngẫu nhiên sau mỗi lần tạo ra.Điều này làm cho nó khó khăn hơn cho việc mã hóa và tìm ra mật khẩu cho những cuộc tấn công. Nó cũng có thể được thực hiện để đi chậm hơn, giúp chống lại các cuộc tấn công.

Cách sử dụng Bcrypt

Nếu bạn là một lập trình viên đang xây dựng một trang web ,tùy vào ngôn ngữ lập trình của bạn đang sử dụng để có chức năng cho phép bạn thêm mã hóa bcrypt để lưu trữ mật khẩu của bạn. Nếu không thì sẽ có một số thư viện bên ngoài cho các ngôn ngữ cho phép bạn làm điều đó.

Ở đây tôi sẽ hướng dẫn đơn giản về cách để mã hóa Bcrypt  bằng java.

// password là chuỗi cần má hóa Bcrypt  
String hashed = BCrypt.hashpw(password, BCrypt.gensalt());

Ở đây tôi đang sử dụng thư viên jBCrypt  version jBCrypt-0.4 các bạn có thể download ở đây.

Bài viết này hy vọng một phần nào đó giúp các bạn hiểu về Bcrypt là gì và cách sử dụng,áp dụng như thế nào trong ứng dụng web.

x