Từ quan điểm mật mã, hàm băm với đầu ra có kích thước cố định:
- Phải là một hàm xác định: cùng một đầu vào phải luôn tạo ra cùng một đầu ra.
- Phải chấp nhận thông báo đầu vào trong một bộ đầu vào rộng. Lý tưởng nhất đó phải là chuỗi bit tùy ý, nhưng thường là chuỗi byte hoặc chuỗi ký tự tùy ý, có thể lên đến một số kích thước.
- Baring vòng loại đặc biệt (như có khóa hoặc bí mật hoặc ngẫu nhiên), phải được công khai: tất cả các bước và hằng số cần thiết để tính toán đầu ra cho bất kỳ đầu vào cụ thể nào đều được biết đến.
- Phải tính toán kết quả của nó trong đa thức thời gian với kích thước đầu vào. Đó phải là thời gian gần như tuyến tính với kích thước đầu vào.
- Nên có chống va chạm: không thể tính toán để hiển thị hai thông báo riêng biệt với cùng một đầu ra (thuộc tính này ngụ ý điện trở tiền ảnh thứ hai, tức là được cung cấp một đầu vào ngẫu nhiên, về mặt tính toán không thể tìm thấy một đầu vào khác mang lại cùng một đầu ra). Chú ý rằng nếu có $n$ đầu ra có thể, có những cuộc tấn công chung phá vỡ khả năng chống va chạm với khoảng $\sqrt n$ đánh giá chức năng, do đó khả năng chống va chạm ngụ ý $n$ là lớn (giả sử, ít nhất $2^{192}$ ngày nay); nếu không, định nghĩa về khả năng chống va chạm phải được nới lỏng thành: phương pháp tốt nhất để thể hiện hai thông báo riêng biệt với cùng một đầu ra là một cuộc tấn công chung.
- Nên có (đầu tiên) kháng ảnh trước: được cung cấp đầu ra cho một đầu vào ngẫu nhiên chưa biết, về mặt tính toán không thể tìm thấy đầu vào đó (hoặc một đầu vào khác có cùng đầu ra) dễ dàng hơn bằng cách thử các đầu vào. Chú ý rằng nếu có $n$ các kết quả đầu ra có thể, có các cuộc tấn công chung phá vỡ khả năng kháng ảnh trước với khoảng $n$ các đánh giá của chức năng, do đó, khả năng chống ảnh hưởng ngụ ý $n$ là lớn (giả sử, ít nhất $2^{96}$ ngày nay); nếu không, định nghĩa về khả năng chống tạo ảnh trước phải được nới lỏng.
Tổng quát hơn, hàm băm mật mã hiện đại nên hoạt động rộng rãi như một tiên tri ngẫu nhiên, đó là một hộp thực hiện một chức năng, đầu ra này là ngẫu nhiên cho mọi đầu vào cụ thể. Đối với bộ đầu ra đủ lớn, điều đó có nghĩa là khả năng chống va chạm, khả năng chống tạo ảnh trước, v.v.:
- Đối với đầu vào ngẫu nhiên không xác định có bất kỳ đặc tính tự nhiên nào (nghĩa là không phụ thuộc vào định nghĩa của hàm băm; ví dụ: đầu vào bao gồm 40 chữ số thập phân có tổng chia hết cho 10), đầu ra phải không thể phân biệt bằng tính toán với ngẫu nhiên thống nhất trong bộ đầu ra.
- Khả năng chống tấn công kéo dài: đầu ra được cung cấp cho đầu vào không xác định $M$, không thể tính toán đầu ra cho đầu vào một phần mở rộng của $M$ (đó là $M\mathbin\|E$ cho không trống $E$) dễ dàng hơn bằng cách tìm $M$ bằng cách thử đầu vào. Lưu ý rằng các giá trị băm phổ biến như SHA-256 không có thuộc tính sau này.