2008-12-22 28 views
6

Tôi có một danh sách các địa chỉ (64 bit) đại diện cho một khung ngăn xếp và tôi muốn băm chúng thành một số 64 bit duy nhất để giúp xác định những Đã từng nhìn thấy trước đây. Có tối đa 128 địa chỉ.Thuật toán băm tốt cho danh sách địa chỉ (bộ nhớ)

Thuật toán hiện tại của tôi tính toán băm bằng cách lặp qua danh sách, xor'ing từng địa chỉ vào băm và xoay băm 11 bit mỗi chu kỳ.

Bất kỳ đề xuất nào tốt hơn?

+0

Tại sao băm chúng ở tất cả và không chỉ đưa chúng vào intptr_t (giả sử C)? – Christoph

+0

Tôi nghĩ anh ấy đang cố kiểm tra đường dẫn chương trình. Anh ấy đang cố gắng lưu một đường dẫn của các địa chỉ 64 bit. Câu trả lời CRC64 có vẻ tốt với tôi. – Harvey

+0

Anh ấy muốn băm toàn bộ danh sách - Tôi không hiểu, nhờ làm rõ ... – Christoph

Trả lời

4

Bạn có thể xem xét một số loại CRC.

Có thể là CRC64.

+0

CRC không nên được sử dụng làm băm, nó có hành vi va chạm rất xấu. – martinus

0

Nếu hiệu suất không phải là vấn đề bạn có thể thử băm mật mã - cắt bớt số byte bạn muốn.

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