01/10/2018, 17:13
Ý nghĩa của hash trong deduplication
Mn cho em hỏi “hash” là gì mà khi chạy ra kết quả là một số em cũng không hiểu nữa?
Bài liên quan
Mn cho em hỏi “hash” là gì mà khi chạy ra kết quả là một số em cũng không hiểu nữa?
Mình thấy chưa hẳn như vậy vì đọc hết cả file rồi hash thì chắc chắn là lâu hơn so với việc đọc mấy trăm byte đầu. Mà đọc hết file chiếm (rất) nhiều thời gian so với phần hash.
Để tiết kiệm gì gì đó thì đã phải tính sẵn hash từ trước, rồi chỉ cần tính hash mới. Như VirusTotal chẳng hạn, hash bên client trước rồi mới lên lookup.
Giả sử bạn có 1000 text file không giống nhau, mỗi text file có cỡ 1gb text. Chỉ cần 2 text mà có 1 từ khác nhau thôi, nó cũng sẽ được coi là khác nhau.
Có người đưa cho bạn 1 cái text file mới, bạn phải kiểm tra coi bạn có nó chưa. Bạn có thể làm như vậy bằng cách so sánh cái text mới với từng cái text mà bạn đang có, so sánh từng byte, vì như mình nói trên, chỉ 1 ký tự khác, nó cũng sẽ khác. Công việc này nó rất là tốn thời gian đúng không? Bạn có thể check 1000 file, nhưng nếu bạn có 1000000000 file thì sao?
Thay vì vậy, bây giờ mỗi lần bạn có một text file, bạn hash nó, nói nôm na, bạn sẽ ra dc 1 cái hash string. Nếu 2 text file mà khác nhau, nó sẽ (gần như*) luôn luôn cho 2 cái hashstring khác nhau. Rồi bạn dùng 1 table để giử mấy cái sô hash đó lại. Bây giờ, mỗi lần có người đưa cho bạn 1 cái text file, bạn lấy sô hash của nó, xong rồi bạn kiếm xem bạn có cái hash đó chưa là xong. Không có cần phải đi kiểm tra từng file chữ từng chữ.
*Mình nói gần như là bởi vì 2 file khác nhau vẫn có thể cho ra cái hash giông nhau, nhưng tỷ lệ rất rất rất thấp. Nếu bạn dùng MD5, tỹ lệ nó ra được giống nhau là 2^(-128).
Mình ko hiểu ý bạn. Thuật toán hash chắc chắn ko lâu vì nó làm việc với các bit dữ liệu và nó sinh ra để làm các công việc như vậy. Có phải đọc file đâu nhỉ. Còn so sánh chỉ cần 2 đoạn mỗi đoạn 1000 chữ thôi (ko cần đến từ), tính đơn gản 1000x1000 = 1tr phép tính.
ko phải từ đâu b, mà là từng kí tự =)))
Bạn không đọc dữ liệu vào từ file thì hash cái gì đây
Đúng vậy, nếu đã có sẵn hash db thì tính xong rồi lookup, nhưng lấy hai file bất kì so với nhau thì không nên. Vì đã hash là phải đọc hết.
Mình muốn nói thêm một VD quan trọng của hash dùng trong security nữa.
VD như khi bạn tạo password cho diễn đàn, cái trang này sẽ tạo một cái hash của cái pw mà bạn chọn rồi save nó vào database. Rồi khi bạn đăng nhập, nó sẽ tạo cái hash rồi so sánh cái hash đó với cái hash mà nó store để check cái pw của bạn có đúng không. Làm như vậy, trang diễn đàn sẽ không biết pw của bạn. Khi đó, giả sữ có một bạn mod nào đó người xấu (sorry mấy bạn mod ), hoặc có hacker coi dc cái database pw của diễn đàn, họ muốn kiếm pw của bạn họ cũng không coi đc bởi vì họ chỉ có thể thấy cái hash của pw của bạn chứ không coi dc pw của bạn. Cái hash của cái hash không có ra dc cái hash trong database nên họ vẫn không thể đăng nhập vào acc.