2012-01-27 25 views
14

Tôi đã đọc khoảng bcrypt (phối cảnh ứng dụng). Suy nghĩ về việc sử dụng nó để lưu trữ mật khẩu trên trang web của tôi.Bcrypt có được sử dụng để Hashing hoặc mã hóa không? Một chút nhầm lẫn

Out of một số nội dung mà tôi đọc nó cho thấy một trong hai cách sau:

  • ví dụ 1: Bcrypt là tiện ích mã hóa tập tin đa nền tảng từ bcrypt
  • ví dụ: 2: bcrypt là một thuật toán băm mật khẩu thích ứng sử dụng lịch trình khóa Blowfish, không phải là thuật toán mã hóa đối xứng. từ How To Safely Store A Password
  • bcrypt là một chức năng adaptive mật mã băm cho các mật khẩu được 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: từ bcrypt wiki

gì chính xác là bcrypt?

+0

Stack Overflow là trang web dành cho các câu hỏi lập trình và phát triển. Câu hỏi này dường như không có chủ đề vì nó không phải là về lập trình hay phát triển. Xem [Tôi có thể hỏi những chủ đề gì ở đây] (http://stackoverflow.com/help/on-topic) trong Trung tâm trợ giúp. Có lẽ [Cryptography Stack Exchange] (http://crypto.stackexchange.com/) hoặc [Information Security Stack Exchange] (http://security.stackexchange.com/) sẽ là một nơi tốt hơn để hỏi. – jww

+1

@jww sau 5 năm câu hỏi này không được đánh dấu là không có chủ đề. – NaveenDA

Trả lời

16

Nó vừa :)

Hầu hết thời gian khi người ta đề cập đến bcrypt, họ đang nói về các adaptive hash algorithm, nhưng nó cũng là tên của một unrelated file encryption utility.

Cả hai đều dựa trên mật mã Blowfish.

+0

Vì vậy, bạn có nghĩa là để nói rằng tôi sẽ sử dụng, 'thuật toán băm thích nghi' khi tôi sử dụng bcrypt để lưu trữ mật khẩu? – ThinkingMonkey

+0

@ThinkingMonkey. Có, miễn là bạn chọn đúng. Tôi đã thêm (của bạn) liên kết vào câu trả lời của tôi để hy vọng làm cho sự khác biệt rõ ràng hơn. – PaulG

+0

Rất đẹp. Tôi thực sự có cùng các liên kết được đề cập trong câu hỏi. :) – ThinkingMonkey

7

bcrypt phần mềm mã hóa sử dụng thuật toán Blowfish được thiết kế bởi Bruce Schneier vào năm 1993. [1]

Các hàm băm bcrypt chỉ có nghĩa là, một băm chức năng. Nó không thực hiện mã hóa, nó băm. Nó dựa trên mật mã Blowfish, và được coi là một điều tốt bởi vì bạn có thể make it slower over time.

Từ Wikipedia:

Đây không phải là mã hóa mạnh hơn so với tiêu chuẩn lịch chính Blowfish đáng kể, nhưng số lượng đạn rekeying là cấu hình; do đó quá trình băm có thể được thực hiện tùy ý chậm, giúp ngăn chặn các cuộc tấn công brute-force khi băm hoặc muối.

Liên quan đến việc lưu trữ mật khẩu trên trang web của bạn, bạn nên mã hóa mật khẩu trước khi băm chúng.

Chỉ sau khi bạn mã hóa chúng bằng một số thuật toán mã hóa (ví dụ: Blowfish, Rijndael/AES), bạn nên sử dụng bcrypt để băm mật khẩu đã mã hóa và lưu mật khẩu băm.

Để biết thêm chi tiết về việc triển khai bảo mật mật khẩu, hãy xem câu trả lời hàng đầu cho this question.

+0

Cảm ơn thông tin. – ThinkingMonkey

+2

Tên của anh ta là 'Schneier', không phải 'Schneider'. –

+8

Để nitpick :) bạn không cần phải mã hóa trước khi băm. – PaulG

3

bcrypt là một chức năng quan trọng nguồn gốc cho các mật khẩu

Ngoài ra chênh lệch giữa băm (được sử dụng bởi bcrypt) và mã hóa hay nói cách đơn giản sẽ là -

1) dữ liệu được mã hóa có thể được giải mã qua khóa riêng. 2) Hashing là một cách có nghĩa là nếu bạn băm văn bản thuần túy thì không thể đảo ngược, do đó bảo mật hơn. Cách duy nhất để đảm bảo là rehash văn bản thuần túy và so sánh nó với dữ liệu đã băm trước đó cho bình đẳng.