Khác biệt giữa các bản “Hàm băm”

không có tóm lược sửa đổi
[[Hình:Hash_function_vi.svg|nhỏ|330px|phải|Một hàm băm tiêu biểu đang hoạt động]]
Một '''hàm băm''' ([[tiếng Anh]]: ''hash function'') hay mộtgiải thuật nhằm sinh ra các '''giảigiá thuậttrị băm''' tương mộtứng phươngvới phápmỗi sinh'''khối mộtdữ địaliệu''' chỉ(có trongthể phần bộmột nhớchuỗi dành cho các khóa được sắp thứ tự. Các hàm này cung cấp, một cáchđối tạotượng mộttrong "vânlập tay"trình sốhướng nhỏđối từtượng, bấtv.v...). kỳ'''Giá loạitrị dữbăm''' liệuđóng nào.vai [[Hàmgần (lậpnhư trình)|Hàm]]một này'''khóa''' cắtđể phân trộnbiệt (thaycác thế và chuyển vị)'''khối dữ liệu''', đểtuy tạonhiên, mộtngười giáta trị thường được gọi làchấp '''giáhiện trịtượng bămtrùng khóa'''. Giáhay trịcòn bămgọi thường được biểu diễn trong [[hệđụng độ sốbăm|đụng 16độ]]. Hàm bămcố tốtgắng cải hàmthiện chogiải rathuật để giảm thiểu ítsự [[đụng độ băm|đụng độ]] (''hashđó. collision'')Hàm trongbăm cácthường miềnđược dữdùng liệu trông đợi. Trong cáctrong [[[bảng băm]] nhằm việcgiảm [[xử'''chi phí dữtính liệu]],toán''' cáckhi đụngtìm độmột này'''khối dẫndữ đếnliệu''' chitrong phímột caotập hơnhợp cho(nhờ việc tìmso kiếmsánh các [[bản'''giá ghitrị băm''' sởnhanh dữhơn liệu|bảnviệc ghiso trongsánh những sở''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 (lập trình) | 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.
 
Các phép toán trên các cấu trúc dữ liệu như danh sách, cây nhị phân... phần lớn được thực hiện bằng cách so sánh các phần tử của cấu trúc, do vậy thời gian truy xuất không nhanh và phụ thuộc vào kích thước của cấu trúc.
Một hàm băm tốt phải thỏa mãn các điều kiện sau:
* Tính toán nhanh.
*[http://herbert.wikispaces.com/HSH HSH 11/13] của Herbert Glarner
*[http://www.paulschou.com/tools/xlate/ Công cụ trực tuyến mã hóa/giải mã dữ liệu dạng Char (ASCII), HEX, Binary, Base64, v.v... bằng các thuật toán băm MD2, MD4, MD5, SHA1+2 v.v..]
*[http://www.hashcrack.dl.am Online md5 Hash-Cracker].
 
[[Thể loại:Giải thuật tìm kiếm]]
41

lần sửa đổi