Tại sao hàm băm dòng lệnh của tôi khác với kết quả băm MD5 trực tuyến?


21

Trên PowerPC Mac OS X v10.5 (Leopard), nếu tôi làm:

tiếng vang "xin chào" | md5
trên dòng lệnh, kết quả là:

b1946ac92492d2347c6235b4d2611184

Nhưng nếu tôi nhập hello vào một trong những trang web băm MD5 trực tuyến như http://md5online.net/ , tôi sẽ nhận được:

5d41402abc4b2a76b9719d911017c592

Tôi có làm điều gì sai? Nếu tôi muốn sử dụng MD5 khi đang di chuyển, làm thế nào tôi có thể chắc chắn những gì tôi nhận được trên dòng lệnh sẽ đồng ý với các công cụ md5 trực tuyến?


Hoạt động với tôi trên Windows với Total Commander tạo tổng kiểm MD5. Tương tự như phiên bản trực tuyến.
Snark

Cảm ơn, Snark. Rudedog đã giải quyết vấn đề khi sử dụng md5 trên dòng lệnh, ít nhất là cho các hệ thống POSIX. Cho anh ta +1 nếu bạn có thể. Tôi còn quá mới
pellea72

Câu trả lời:


40

Khi bạn lặp lại từ dòng lệnh, md5 đang tính tổng 6 ký tự - h, e, l, l, o cộng với dòng mới. Văn bản bạn nhập trong một trang web không có dòng mới.

Hãy thử làm

echo -n hello | md5

và nó sẽ cung cấp cho bạn những gì bạn mong đợi. -N cho biết echo không xuất ra một dòng mới.


Giáo sư. Tôi đã không nhận thấy thẻ '-n'. Bạn đúng rồi đấy Rudedog. Điều đó đã làm việc. Cảm ơn.
pellea72

3

Bạn cũng có thể sử dụng printf thay vì echo, tự động loại bỏ ký tự dòng mới:

printf hello | md5

Hoặc thậm chí:

printf "hello" | md5

2

b1946ac92492d2347c6235b4d2611184 trong md5 của chuỗi

hello

5d41402abc4b2a76b9719d911017c592 trong md5 của

hello

CR + LF

CR + LF là dòng mới của Windows.


1

Để thêm 5 xu của tôi và mở rộng câu trả lời: trong Linux không phải là md5, là md5sum, vì vậy bạn nên thực hiện:

echo -n hello | md5sum
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.