Hàm băm (
tiếng Anh: hash function) là giải thuật nhằm sinh ra các
giá trị băm tương ứng với mỗi
khối dữ liệu (có thể là một chuỗi ký tự, một đối tượng trong lập trình hướng đối tượng, v.v...).
Giá trị băm đóng vai gần như một
khóa để phân biệt các
khối dữ liệu, tuy nhiên, người ta chấp nhận
hiện tượng trùng khóa hay còn gọi là
đụng độ và cố gắng cải thiện giải thuật để giảm thiểu sự
đụng độ đó. Hàm băm thường được dùng trong
bảng băm nhằm giảm
chi phí tính toán khi tìm một
khối dữ liệu trong một tập hợp (nhờ việc so sánh các
giá trị băm nhanh hơn việc so sánh những khối dữ liệu có kích thước lớn).Vì tính thông dụng của
bảng băm, ngày nay, đa số ngôn ngữ lập trình đều cung cấp thư viện ứng dụng
bảng băm, thường gọi là thư viện collection trong đó có các vấn đề như:
tập hợp (collection),
danh sách (list),
bảng(table),
ánh xạ (mapping),
từ điển (dictionary)). Thông thường, các
lập trình viên chỉ cần viết hàm băm cho các đối tượng nhằm tích hợp với thư viện
bảng băm đã được xây dựng sẵn.Một hàm băm tốt phải thỏa mãn các điều kiện sau: