Làm thế nào là một mật khẩu băm được mã hóa trong tập tin mật khẩu bóng?


11

Tôi đang tìm hiểu về bảo mật mật khẩu Linux (tò mò hơn bất kỳ thứ gì hữu ích) và tôi hiểu rằng mật khẩu thực được băm và lưu trữ trong tệp mật khẩu bóng. Điều tôi không chắc chắn và không thể tìm thấy trong Google Googling ngắn gọn của mình, đó là mã hóa nào được sử dụng để mã hóa giá trị băm (và giá trị của muối). Nó rõ ràng không phải là hex, và nó rõ ràng là văn bản, không bao gồm :ký tự. Bất cứ ai ở đây có thể cho tôi biết mã hóa đó là gì?

Chỉnh sửa: Tôi hiểu băm (MD5, SHA-X), muối và công cụ băm. Điều tôi đang tìm kiếm là phương pháp chuyển đổi kết quả băm (một mảng byte (byte [])) thành chuỗi các ký tự tôi thấy trong tệp, tức là: mã hóa.


Câu hỏi của bạn rất liên quan đến câu hỏi này.
Broam

Câu trả lời:


11

Trong trường hợp mã hóa MD5 (), muối chỉ là một chuỗi ngẫu nhiên có tối đa 8 ký tự từ [a-zA-Z0-9./].

Muối và mật khẩu sau đó được băm cùng nhau, được chuyển qua chức năng tăng cường, sau đó được mã hóa bằng một biến thể trên Base64:

  • trạng thái MD5 (128 bit) được xáo trộn và chia thành 6 nhóm, mỗi nhóm chứa 3 byte (nhóm cuối cùng bao gồm 2 byte đệm không)
  • mỗi nhóm 3 byte sau đó được chia thành 4 khối 6 bit mỗi nhóm
  • cuối cùng, mỗi nhóm 6 bit được ánh xạ tới một ký tự trong phạm vi [a-zA-Z0-9./]

8

Nếu bạn chỉ muốn biết mật khẩu được mã hóa như thế nào, crypt () sử dụng loại mã hóa Base64 đặc biệt.

Mã hóa Base64 sử dụng bộ ký tự sau: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 + /

Trong khi mã hóa mật mã () sử dụng bộ ký tự này: ./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

Ngoài ra, không giống như Base64, không có phần đệm "=".

Mặt khác, việc triển khai mã hóa () của MD5, SHA-X, v.v. không chỉ tạo ra một muối ngẫu nhiên, chạy hàm băm và mã hóa nó bằng cách sử dụng mã hóa trước đây.

Tôi khuyên bạn nên đọc hai bài đăng tuyệt vời này: "Băm mật khẩu với MD5-crypt liên quan đến MD5""Triển khai SHA512-crypt so với MD5-crypt" , để giải thích đầy đủ hơn.



2

Bạn đang tìm kiếm các thuật toán được sử dụng?

Theo truyền thống, các biến thể Unix và Linux ban đầu đã sử dụng một DES yếu dựa trên tối đa 8 ký tự của mật khẩu. Hầu hết các bản cài đặt Linux hiện đại đều sử dụng băm MD5 cho mật khẩu và một số hỗ trợ SHA. Ngoài ra, hỗ trợ nhiều mô-đun hơn cho các thuật toán bổ sung đã xuất hiện, bao gồm cả blowfish. GNU libc được sử dụng bởi hầu hết các Linux hỗ trợ DES, MD5 và SHA, cung cấp cho bạn một vài tùy chọn.

Loại thuật toán băm cụ thể được sử dụng được chỉ định làm phần đầu của mật khẩu là $ DIGIT $. Ví dụ: $ 1 $ là MD5.

Bạn có thể nhận thêm chi tiết chuyên sâu từ Wikipedia (xem trang trên Crypt_ (Unix) ) hoặc google cho 'crypt unix' hoặc 'crypt linux'.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.