2010-09-27 52 views
19

Xấu hổ, chọn hàm băm (ví dụ, cho chuỗi băm, hoặc bộ số nguyên, v.v.) vẫn là ma thuật đối với tôi: lấy một số nguyên tố ở đây, hằng số ma thuật ở đó, thực hiện một chút thay đổi, modulo một cái gì đó và thực hiện.Có hướng dẫn chức năng băm nhẹ nhàng không?

Có hướng dẫn tốt, nhẹ nhàng và dễ tiếp cận về cách tạo hàm băm không?

Trả lời

3

Bạn có thể tìm thấy hướng dẫn băm phong nha, dễ dàng tại Hash Table Tutorial (cũng thảo luận về hàm băm). Lưu ý rằng nếu bạn thực hiện tìm kiếm trên web, bạn có thể tìm thấy nhiều thông tin tốt.

Wikipedia có một số thông tin cơ bản trên cả hai số Hash TablesHash Functions.

EDIT

Một câu hỏi tương tự trước đây hỏi: Which Hash Function Should I Choose. Câu hỏi và câu trả lời là tuyệt vời.

+5

câu hỏi là về hàm băm chứ không phải bảng băm. – codymanix

+0

Cảm ơn @codymanix, tôi đã thêm bản chỉnh sửa để tránh bất kỳ sự nhầm lẫn nào. –

+0

Trang Hash Function của Wikipedia không phải là một hướng dẫn hay. – Frank

12

Thật là tò mò khi tìm ra lời giải thích cơ bản về thuật toán băm. Có lẽ chủ đề khó khăn đến mức không thể thực hiện một hướng dẫn cơ bản. Tôi đang tìm kiếm một bản thân và chạy vào cùng một vấn đề.

Nhưng bạn có thể thử trang này. Điều thú vị về nó là sau khi bạn đọc qua trang, ở dưới cùng có một hộp văn bản. Nếu bạn thêm văn bản vào hộp đó và gửi biểu mẫu, kết quả là một danh sách từng bước về cách nó băm văn bản đầu vào.

http://www.metamorphosite.com/one-way-hash-encryption-sha1-data-software

Chúc may mắn. Nếu bạn tìm thấy bất cứ điều gì tốt hơn, nó sẽ thực sự hữu ích nếu bạn đăng nó ở đây.

1

Tôi thấy liên kết này hữu ích một chút. Nó cung cấp cho một cái nhìn tổng quan cơ bản nhưng rơi ngắn của một sự hiểu biết thấu đáo về những thứ như lý do tại sao thủ, tại sao chút chuyển vv ..

http://www.i-programmer.info/babbages-bag/479-hashing.html

Từ liên kết này, nổi bật một số phần đó đưa ra một cái nhìn tổng quan

Điều gì tạo nên hàm băm tốt Các hàm băm tốt nhất hoạt động bằng cách tính phần còn lại sau khi chia cho kích thước bảng N.

Giá trị này luôn mang lại giá trị từ 0 đến N-1. thì nó cũng tuyệt vời khi phân tán dữ liệu quanh bàn. Tất nhiên, nếu bạn có một giá trị văn bản mà bạn muốn băm đầu tiên bạn phải chuyển đổi nó thành một giá trị số thích hợp và một sơ đồ đơn giản giống như một trong ví dụ sẽ không làm.

Bạn cần tạo một giá trị số khác nhau cho mọi giá trị văn bản có thể và cộng các mã ASCII của hai chữ cái đầu tiên rõ ràng không hoạt động. Phương pháp tốt hơn là cân mỗi mã ASCII bằng vị trí của chữ cái bằng cách nhân với 1 cho ký tự đầu tiên, 10 cho ký tự thứ hai, 100 cho số thứ ba và vv .. trước khi thêm chúng lên để cho một giá trị duy nhất.

Nói chung việc xây dựng hàm băm thực sự tốt là khó khăn và trong hầu hết các trường hợp, bạn cần phải tìm một hàm có tính chất tốt và đã được thử nghiệm tốt.

+0

Đăng liên kết là không đủ. Vui lòng đảm bảo câu trả lời của bạn cũng hữu ích nếu không có liên kết, ví dụ: trích dẫn các phần liên quan từ trang được liên kết. Hãy tưởng tượng điều gì sẽ xảy ra nếu liên kết đó bị hỏng trong tương lai. – juzraai

+1

Cảm ơn. Sẽ ghi nhớ. Đã chỉnh sửa câu trả lời để đánh dấu phần tôi thấy hữu ích. – toing

Các vấn đề liên quan