Trang này chỉ dành cho mục đích thông tin. Một số dịch vụ và tính năng có thể không khả dụng ở khu vực pháp lý của bạn.
Bài viết này đã được dịch tự động từ ngôn ngữ gốc.

Hàm băm mật mã là gì?

Hàm băm mật mã là một cách tính biến dữ liệu thành bản tóm lược có độ dài cố định. Dù dữ liệu đầu vào là một câu hay một tệp lớn, cùng một thuật toán băm luôn cho ra kết quả có độ dài mà thuật toán đó quy định. Kết quả này gọi là giá trị băm hoặc bản tóm lược.

Nó giống như "dấu vân tay" của dữ liệu: đầu vào không đổi thì giá trị băm tính ra cũng không đổi, còn chỉ cần sửa một ký tự trong đầu vào thì kết quả thường khác đi rõ rệt. Nhờ vậy, người khác có thể tính lại giá trị băm để kiểm tra dữ liệu mình nhận được có khớp với bản gốc hay không, mà không cần so sánh toàn bộ nội dung từng ký tự.

Phép so sánh này cũng có giới hạn. Giá trị băm không phải bản viết tắt của dữ liệu và không dùng để khôi phục văn bản gốc; nó cũng không phải một số định danh tuyệt đối duy nhất. Điều mà một hàm băm mật mã an toàn hướng tới là làm cho việc suy ngược về đầu vào hoặc cố tình tìm ra cùng một kết quả trở nên cực kỳ tốn kém về mặt tính toán, chứ không phải bảo đảm về mặt toán học rằng xung đột không bao giờ xảy ra.

Đầu vào và đầu ra của một phép băm

Thuật toán băm xử lý một dãy dữ liệu nhị phân xác định. Văn bản, hình ảnh hay giao dịch đều phải được chuyển thành byte trước khi tính; nếu bảng mã ký tự, thứ tự trường, hay cách sắp xếp thông tin có cấu trúc thành byte khác nhau thì đầu vào khác nhau, và kết quả cũng khác. Quá trình sắp xếp này thường được gọi là tuần tự hóa.

Lấy SHA-256 làm ví dụ, nó luôn cho ra 256 bit, tức 32 byte. Giá trị băm thường được viết dưới dạng 64 ký tự thập lục phân cho dễ đọc với người và phần mềm. Hai đầu vào dưới đây chỉ khác nhau ở chữ hoa chữ thường của một chữ cái, nhưng kết quả hoàn toàn khác biệt:

Đầu vào Giá trị băm SHA-256
hello 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
Hello 185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969

Cùng một đầu vào luôn cho ra cùng kết quả một cách ổn định, nên các bên khác nhau có thể tự xác minh độc lập. Kết quả thay đổi rõ rệt thì dễ phát hiện đầu vào đã bị thay đổi. Nhưng chỉ dựa vào việc "trông có vẻ ngẫu nhiên" thì không thể kết luận một thuật toán có an toàn hay không; mức an toàn còn phụ thuộc vào việc thuật toán có chống được những kiểu tấn công cụ thể hay không.

Ba tính chất quan trọng của hàm băm mật mã

Hàm băm mật mã thường phải làm cho ba việc sau đây trở nên khó thực hiện trong điều kiện tính toán thực tế:

  • Biết một giá trị băm, khó tìm được đầu vào tạo ra kết quả đó. Tính chất này gọi là kháng tiền ảnh. Nói đơn giản, không thể coi giá trị băm như một tệp nén có thể giải mã trực tiếp.
  • Biết một đầu vào, khó tìm được đầu vào thứ hai khác nó mà cho cùng giá trị băm. Tính chất này gọi là kháng tiền ảnh thứ hai.
  • Khó tìm được bất kỳ hai đầu vào khác nhau nào cho cùng một giá trị băm. Tính chất này gọi là kháng xung đột.

Vì số lượng đầu vào khả dĩ nhiều hơn rất nhiều so với số lượng đầu ra có độ dài cố định, xung đột chắc chắn tồn tại về mặt toán học. Mục tiêu an toàn không phải là triệt tiêu xung đột, mà là khiến bên tấn công không thể tìm ra một xung đột khai thác được với chi phí khả thi.

"Khó suy ngược" cũng không có nghĩa hàm băm che được mọi bí mật. Nếu phạm vi đầu vào nhỏ hoặc dễ đoán, chẳng hạn những mật khẩu phổ biến, bên tấn công có thể lần lượt thử các giá trị ứng viên rồi so kết quả. Vì vậy, việc lưu mật khẩu thường cần một phương án băm dành riêng cho mật khẩu, có trộn thêm dữ liệu ngẫu nhiên riêng cho từng bản ghi (giá trị muối) và đặt ra lượng tính toán cần cho mỗi lần thử (tham số chi phí). Không thể chỉ băm mật khẩu một lần bằng hàm băm thông thường và nhanh.

Khác biệt giữa hàm băm, mã hóa, chữ ký số và checksum

Những kỹ thuật này đều có thể dùng để xử lý hoặc kiểm tra dữ liệu, nhưng giải quyết các vấn đề khác nhau:

Phương pháp Tác dụng chính Có khôi phục được dữ liệu gốc không Có cần khóa không
Hàm băm mật mã Tạo bản tóm lược của dữ liệu để kiểm tra tính toàn vẹn hoặc làm nền cho các cơ chế mật mã khác Thiết kế để không suy ra đầu vào từ bản tóm lược Hàm băm thông thường thì không
Mã hóa Ngăn người không được phép đọc nội dung Có thể giải mã khi có khóa đúng Có
Chữ ký số Chứng minh bên giữ khóa riêng tư tương ứng đã cấp phép cho dữ liệu cụ thể, và kiểm tra dữ liệu có bị sửa hay không Chữ ký không dùng để khôi phục dữ liệu gốc Ký và xác minh dùng một cặp khóa
Checksum thông thường Phát hiện lỗi vô tình khi truyền hoặc lưu trữ Không dùng được để khôi phục dữ liệu gốc Thường là không

Bản thân hàm băm không chứng minh được ai tạo ra dữ liệu. Hệ chữ ký số thường tính bản tóm lược của dữ liệu trước, rồi để khóa riêng tư ký lên kết quả gắn với dữ liệu đó; bên xác minh còn cần khóa công khai và quy tắc chữ ký mới kiểm tra được quan hệ cấp phép. Checksum thông thường chủ yếu chống hỏng dữ liệu do ngẫu nhiên, và thường không chống được việc bên tấn công cố ý sửa dữ liệu.

Blockchain sử dụng hàm băm như thế nào

Blockchain không duy trì sổ cái chỉ bằng một giá trị băm. Hàm băm thường được dùng cùng với chữ ký số, việc xác thực của mạng, đồng thuận và các cấu trúc dữ liệu, và đảm nhiệm những nhiệm vụ sau.

Định danh giao dịch hoặc dữ liệu khác

Một số mạng tính ra định danh từ dữ liệu giao dịch đã được sắp xếp theo định dạng của giao thức. Ví dụ, định danh giao dịch Bitcoin (TXID) đến từ giá trị băm của dữ liệu giao dịch đã tuần tự hóa. Chỉ cần các bên dùng cùng quy tắc xử lý cùng dữ liệu, họ có thể tự tính ra cùng một định danh.

Tuy vậy, "hash giao dịch" không phải một số định danh dùng chung mà mọi mạng đều áp dụng cùng thuật toán hay cùng định dạng đầu vào. Tên mạng, thuật toán và quy tắc tuần tự hóa đều là phần của ý nghĩa; chỉ sao chép một dãy ký tự có thể chưa đủ để chỉ rõ đối tượng.

Nối các block và làm lộ thay đổi trong lịch sử

Block có thể lưu giá trị băm của header block trước đó. Khi dữ liệu của block trước thay đổi, giá trị băm của nó cũng thay đổi, và giá trị mà các block sau đang lưu sẽ không còn khớp. Cả header block của Bitcoin và block của Ethereum đều chứa thông tin băm trỏ về block liền trước.

Cách nối này giúp dễ phát hiện thay đổi trong lịch sử, nhưng không ngăn được về mặt vật lý việc ai đó tính lại giá trị băm. Để xác định mạng cuối cùng chấp nhận đoạn lịch sử nào thì vẫn cần quy tắc xác thực, cơ chế đồng thuận và đánh giá của các bên tham gia về trạng thái mạng.

Tóm lược lượng lớn dữ liệu và cung cấp bằng chứng bao hàm

Những cấu trúc như cây Merkle sẽ ghép và băm nhiều mục dữ liệu theo từng lớp, cuối cùng ra một giá trị băm gốc. Bên xác minh có thể dùng vài giá trị băm trung gian để kiểm tra một mục dữ liệu có nằm trong tập dữ liệu đã cam kết hay không, mà không phải truyền toàn bộ nội dung mỗi lần. Cây Merkle Patricia của Ethereum là một cấu trúc dùng hàm băm để nối dữ liệu trạng thái.

Giá trị băm gốc chỉ có thể cho biết dữ liệu đã cho có khớp với cam kết mật mã đó hay không. Nó không chứng minh được thông tin đầu vào đến từ nguồn đáng tin, cũng không chứng minh được một sự kiện ngoài chuỗi đã thực sự xảy ra.

Tham gia vào bằng chứng công việc

Trong hệ thống bằng chứng công việc, người tham gia liên tục điều chỉnh dữ liệu trong block ứng viên rồi tính giá trị băm, nhằm tìm kết quả thỏa mãn điều kiện độ khó của giao thức. Các node khác có thể nhanh chóng kiểm tra kết quả có đạt chuẩn hay không. Ở đây hàm băm cung cấp một bài toán có thể tính lại được và một kết quả kiểm chứng được, nhưng block của ai được mạng chấp nhận thì vẫn do toàn bộ quy tắc đồng thuận quyết định.

Không thể thay thế thuật toán băm một cách tùy tiện

SHA-256, SHA-3 và các hàm băm mật mã khác là những họ thuật toán khác nhau. Dù hai thuật toán đều cho ra 256 bit, chúng cũng không cho cùng kết quả với cùng một đầu vào. Hướng dẫn trong giao thức hoặc hướng dẫn kiểm tra tệp phải nêu đồng thời tên thuật toán và cách xử lý đầu vào; không thể chỉ viết "tính một giá trị băm".

Các thuật toán băm an toàn phổ biến gồm hai họ SHA-2 và SHA-3. Chuẩn băm an toàn của Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ (NIST) bao gồm họ SHA-2, còn chuẩn SHA-3 bao gồm họ SHA-3. Tên thuật toán gần giống nhau cũng không có nghĩa chi tiết triển khai giống nhau. Hệ thống nên dùng thuật toán mà giao thức của nó yêu cầu rõ ràng và vẫn phù hợp với mục đích hiện tại; không thể vì thuật toán cũ vẫn cho ra kết quả mà coi nó còn đáp ứng yêu cầu an toàn.

Câu hỏi thường gặp

Giá trị băm có giải mã được không?

Không thể "giải mã" một hàm băm mật mã thông thường, vì băm không phải mã hóa và cũng không có khóa giải mã tương ứng. Bên tấn công có thể tìm ra giá trị khớp bằng cách đoán đầu vào, dò hết một không gian đầu vào nhỏ hoặc khai thác điểm yếu của thuật toán, nhưng đó không phải việc khôi phục trực tiếp văn bản gốc từ bản tóm lược.

Hai dữ liệu có cùng giá trị băm thì nội dung chắc chắn giống nhau?

Không thể nói là chắc chắn về mặt toán học, vì đầu ra có độ dài cố định tất yếu cho phép xung đột. Khi dùng thuật toán vẫn còn đủ khả năng kháng xung đột, và đã xác nhận hai bên dùng cùng bảng mã cùng quy tắc tính, thì giá trị băm giống nhau thường là bằng chứng mạnh cho thấy dữ liệu khớp nhau.

Thấy giá trị băm là xác nhận được tệp an toàn?

Không. Bạn còn phải biết giá trị băm kỳ vọng đến từ đâu. Nếu cả tệp và giá trị băm trên trang đều bị bên tấn công thay thế, tính lại vẫn có thể "khớp". Hàm băm giúp kiểm tra dữ liệu có nhất quán với một bản tóm lược đã biết, nhưng bản tóm lược đó phải được lấy qua kênh đáng tin.

Blockchain dùng hàm băm thì thông tin trên chuỗi chắc chắn là thật?

Không. Hàm băm giúp kiểm tra dữ liệu có thay đổi hay không và các cấu trúc dữ liệu có khớp nhau hay không, nhưng không phán định được nội dung đầu vào có mô tả đúng thế giới thực hay không. Nguồn gốc dữ liệu, việc cấp phép bằng chữ ký, việc xác thực của mạng và đồng thuận vẫn phải xét riêng.

Khái niệm liên quan

Tìm hiểu thêm về block, blockchain, khóa công khai và khóa riêng tư, hoặc trở lại bảng thuật ngữ tiền mã hóa.

Nguồn

Tuyên bố miễn trừ trách nhiệm
Nội dung này chỉ nhằm mục đích cung cấp thông tin và có thể đề cập đến các sản phẩm không khả dụng tại khu vực của bạn. Nội dung này không nhằm mục đích cung cấp (i) lời khuyên hoặc khuyến nghị đầu tư; (ii) đề nghị hoặc chào mời mua, bán hoặc nắm giữ crypto/tài sản kỹ thuật số; hoặc (iii) tư vấn tài chính, kế toán, pháp lý hoặc thuế. Tài sản kỹ thuật số/crypto, bao gồm cả stablecoin, có mức độ rủi ro cao và có thể biến động mạnh. Bạn nên cân nhắc kỹ xem việc giao dịch hoặc nắm giữ crypto/tài sản kỹ thuật số có phù hợp với bạn hay không, dựa trên tình hình tài chính của mình. Vui lòng tham khảo ý kiến của chuyên gia pháp lý/thuế/đầu tư để được giải đáp câu hỏi về tình hình cụ thể của bản thân. Thông tin (bao gồm dữ liệu thị trường và thông tin thống kê, nếu có) trong bài viết này chỉ mang tính chất thông tin chung. Mặc dù đã thực hiện mọi biện pháp cẩn thận hợp lý khi chuẩn bị dữ liệu và biểu đồ này, chúng tôi không chịu trách nhiệm về bất kỳ sai sót thực tế hoặc thiếu sót nào trong tài liệu này.

© 2025 OKX. Bài viết này có thể được sao chép hoặc phân phối toàn bộ, hoặc trích dẫn các đoạn không quá 100 từ, miễn là không sử dụng cho mục đích thương mại. Mọi bản sao hoặc phân phối toàn bộ bài viết phải ghi rõ: “Bài viết này thuộc bản quyền © 2025 OKX và được sử dụng có sự cho phép.” Nếu trích dẫn, vui lòng ghi tên bài viết và nguồn tham khảo, ví dụ: “Tên bài viết, [tên tác giả nếu có], © 2025 OKX.” Một số nội dung có thể được tạo ra hoặc hỗ trợ bởi công cụ trí tuệ nhân tạo (AI). Nghiêm cấm các tác phẩm phái sinh hoặc hình thức sử dụng khác đối với bài viết này.

Bài viết liên quan

Xem thêm
crypto-glossary-cover-v5.contentful

Thuật ngữ tiền mã hóa từ A đến Z: Blockchain và giao dịch

Khám phá các khái niệm về tiền mã hóa, blockchain và giao dịch qua định nghĩa ngắn gọn, được sắp xếp theo thuật ngữ tiếng Anh và kèm tên gọi tiếng Việt. [A](#a) · [B](#b) · [C](#c) · [D](#d) · [E](#e)
29 thg 10, 2026
Crypto adoption generic thumbnail

DeFi là gì?

Tài chính phi tập trung (decentralized finance, DeFi) là một loại ứng dụng cung cấp những chức năng tài chính như trao đổi tài sản và cho vay, chủ yếu thông qua blockchain và hợp đồng thông minh. Hợp
29 thg 10, 2026
decentralized-exchange-dex

DEX là gì?

Sàn giao dịch phi tập trung (decentralized exchange, DEX) là một loại hệ thống giao dịch cho phép người dùng trao đổi tài sản số thông qua giao thức blockchain hoặc hợp đồng thông minh. Hợp đồng thông
29 thg 10, 2026
thumbnail:dao

DAO là gì?

Tổ chức tự trị phi tập trung (decentralized autonomous organization, DAO) là một cách tổ chức để nhiều người cùng ra quyết định, quản lý ngân quỹ hoặc duy trì một dự án theo những quy tắc đã thống nhấ
29 thg 10, 2026
DApps generic thumb

DApp là gì?

Ứng dụng phi tập trung (decentralized application, DApp) là ứng dụng giao một phần quy tắc hoặc trạng thái cốt lõi của mình — ví dụ số dư, quyền sở hữu và bản ghi cấp phép — cho một mạng phi tập trung
29 thg 10, 2026
crypto-token

Token mã hóa là gì?

Token mã hóa là đơn vị số do giao thức blockchain hoặc chương trình on-chain định nghĩa, có thể được ghi nhận và chuyển giao thông qua blockchain. Blockchain có thể ghi việc token thuộc về ai trong nh
29 thg 10, 2026
Xem thêm