Tôi không thể sử dụng tăng: băm vì tôi phải gắn bó với C và không thể sử dụng C++.Hàm băm tối thiểu cho C?
Nhưng, tôi cần phải băm một số lượng lớn (10K đến 100k) chuỗi mã (độ dài từ 5 đến 40 byte) để tìm kiếm trong đó nhanh nhất.
MD5, SHA1 hoặc bất kỳ hàm băm dài nào có vẻ quá nặng đối với một tác vụ đơn giản, tôi không làm mật mã. Thêm vào đó là chi phí lưu trữ và tính toán.
Vì vậy câu hỏi của tôi:
gì có thể là thuật toán băm đơn giản nhất mà sẽ đảm bảo phòng ngừa va chạm trong trường hợp thực tế nhất.
Có bao nhiêu bit để sử dụng cho giá trị băm? Tôi đang phát triển cho các hệ thống 32 bit. Thuật toán băm trong Perl/Python có sử dụng băm 32 bit không? Hay tôi phải nhảy tới 64?
Liên quan đến việc triển khai bảng băm trong các ngôn ngữ kịch bản phổ biến: thực hiện kiểm tra xem có bị va chạm hoặc tôi có thể tránh hoàn toàn phần đó không?
Các trang sau có một số triển khai của hàm băm mục đích chung thực hiện trong C (và nhiều ngôn ngữ khác): http://partow.net/ programming/hashfunctions/index.html –
Bạn đã cân nhắc sử dụng GLib chưa? https://developer.gnome.org/glib/2.46/glib-Hash-Tables.html –