Trả lời nhanh: Hash (hàm băm) là thuật toán biến dữ liệu bất kỳ, từ một chữ đến một tệp vài GB, thành một chuỗi ngắn có độ dài cố định gọi là mã hash. Cùng dữ liệu luôn cho cùng mã, sửa một ký tự là mã đổi hẳn, và không thể tính ngược mã hash về dữ liệu gốc.
Điểm chính
- Mã hash giống “dấu vân tay” của dữ liệu: ngắn, cố định độ dài, dùng để nhận diện và phát hiện chỉnh sửa chứ không để giấu nội dung.
- Hàm băm mật mã tốt cần 5 tính chất: xác định, tính nhanh, một chiều, kháng tiền ảnh thứ hai và kháng va chạm.
- MD5 và SHA-1 đã bị phá về va chạm. NIST phê duyệt SHA-2, SHA-3 và yêu cầu loại bỏ SHA-1 trước 31/12/2030.
- Blockchain dùng hash để nối các khối, dựng cây Merkle, làm câu đố đào Proof of Work và tạo địa chỉ ví.
- Không lưu mật khẩu bằng MD5 hay SHA-256 thuần. Hãy dùng Argon2id, scrypt hoặc bcrypt, có salt riêng cho từng tài khoản.
Mục lục
- Hash là gì?
- Ví dụ: sửa 1 ký tự, mã SHA-256 thay đổi ra sao?
- Hàm băm hoạt động như thế nào?
- 5 tính chất của hàm băm mật mã
- Hàm băm thông thường và hàm băm mật mã khác nhau ra sao?
- Các thuật toán hash phổ biến hiện nay
- Hash trong blockchain dùng để làm gì?
- Hash được ứng dụng ở đâu ngoài blockchain?
- Hash khác mã hoá như thế nào?
- Tiêu chuẩn và quy định tại Việt Nam liên quan tới hàm băm
- Những hiểu lầm phổ biến về hash
- Câu hỏi thường gặp
Hash là gì?
Hash là gì, hay hàm băm là gì? Hàm băm (hash function) là thuật toán nhận đầu vào có độ dài bất kỳ và trả về đầu ra có độ dài cố định. Đầu ra được gọi là giá trị băm (hash value), mã băm hoặc bản tóm lược (message digest), thường viết ở dạng thập lục phân (hex) gồm chữ số 0–9 và chữ a–f.
Ví dụ: với SHA-256, dù bạn đưa vào chữ “a”, một hợp đồng 50 trang hay tệp cài đặt vài GB, kết quả luôn là 256 bit, tức đúng 64 ký tự hex. Với MD5, đầu ra luôn là 128 bit (32 ký tự hex).
Cách hình dung dễ nhất là dấu vân tay của dữ liệu. Vân tay nhỏ hơn con người rất nhiều nhưng đủ để nhận ra một người. Bạn không dựng lại được cả người từ vân tay, và hai người gần như không bao giờ trùng vân tay. Mã hash có đúng ba đặc điểm đó với dữ liệu.
Mã hash là gì? Khác gì checksum?
Mã hash là kết quả của hàm băm trên một dữ liệu cụ thể, ví dụ chuỗi 64 ký tự trong Hình 1 bên dưới. Còn hàm băm là thuật toán tạo ra nó, như SHA-256 hay BLAKE2. Checksum (tổng kiểm tra) là cách gọi theo mục đích: giá trị dùng để kiểm tra dữ liệu có bị lỗi không. Checksum có thể dùng hàm băm mật mã như SHA-256, hoặc thuật toán đơn giản như CRC32 chỉ để bắt lỗi truyền tin ngẫu nhiên.
Ví dụ: sửa 1 ký tự, mã SHA-256 thay đổi ra sao?
Chúng tôi tự tính bằng thư viện hashlib của Python với hai chuỗi chỉ khác một ký tự: “Chuyen 100 trieu cho An” và “Chuyen 900 trieu cho An”. Trong bảng mã ASCII, ký tự “1” và “9” chỉ khác nhau đúng 1 bit.
Hai mã hash không có điểm gì “gần giống” nhau: 129 trên 256 bit bị đảo, xấp xỉ một nửa; so từng ký tự hex chỉ 6 trên 64 vị trí trùng, ngang mức trùng ngẫu nhiên. Đây là hiệu ứng tuyết lở (avalanche effect): thay đổi rất nhỏ ở đầu vào xáo trộn toàn bộ đầu ra.
Ý nghĩa thực tế: nếu ai đó sửa một chữ số trong chứng từ điện tử, mã hash đổi hoàn toàn và người nhận chỉ cần so mã là phát hiện. Lưu ý với tiếng Việt có dấu: cùng chữ “ế” có thể được lưu bằng các chuỗi byte khác nhau (dạng dựng sẵn hay tổ hợp), dẫn tới mã hash khác nhau, nên hai bên cần thống nhất chuẩn hoá Unicode trước khi băm.
Hàm băm hoạt động như thế nào?
Một hàm băm mật mã thường làm 3 việc. Đầu tiên là đệm (padding) dữ liệu kèm độ dài gốc để chia hết cho kích thước khối, với SHA-256 là 512 bit. Tiếp theo, mỗi khối đi qua một hàm nén gồm nhiều vòng phép tính bit như dịch, xoay, cộng, XOR; kết quả khối trước là trạng thái đầu vào của khối sau. Cuối cùng, trạng thái sau khối cuối chính là mã hash.
MD5, SHA-1 và SHA-2 dùng cấu trúc Merkle–Damgård, nối các hàm nén thành chuỗi. SHA-3 dùng cấu trúc bọt biển (sponge): dữ liệu được “hấp thụ” vào một trạng thái lớn rồi “vắt” ra đầu ra. Cấu trúc này cho phép đầu ra dài tuỳ ý và miễn nhiễm với tấn công kéo dài độ dài (length extension) vốn ảnh hưởng tới Merkle–Damgård.
5 tính chất của hàm băm mật mã
Để dùng trong bảo mật và blockchain, hàm băm cần đủ các tính chất sau:
| Tính chất | Nghĩa là gì | Vì sao quan trọng |
|---|---|---|
| Xác định (deterministic) | Cùng đầu vào, cùng thuật toán luôn cho cùng mã, trên mọi máy | Hai bên ở xa nhau mới so được mã để kiểm tra dữ liệu |
| Tính nhanh | Tạo mã cho dữ liệu lớn trong thời gian ngắn | Dùng được cho tệp lớn, hàng triệu giao dịch. Riêng với mật khẩu, nhanh lại là điểm yếu |
| Một chiều, kháng tiền ảnh (preimage resistance) | Có mã hash, không tìm được đầu vào nào băm ra mã đó ngoài cách đoán thử | Công bố mã hash không làm lộ nội dung gốc |
| Kháng tiền ảnh thứ hai | Cho trước một dữ liệu, không tìm được dữ liệu khác cùng mã | Kẻ gian không thay được tệp của bạn bằng tệp độc hại cùng mã |
| Kháng va chạm (collision resistance) | Không tìm được bất kỳ cặp dữ liệu khác nhau nào cùng mã | Nền tảng của chữ ký số. Tính chất này bị phá thì thuật toán coi như lỗi thời |
Va chạm có thật sự không bao giờ xảy ra?
Về lý thuyết, va chạm luôn tồn tại: SHA-256 chỉ có 2 mũ 256 đầu ra (khoảng 1,16 × 1077) trong khi đầu vào là vô hạn. “Kháng va chạm” nghĩa là không thể tìm ra chúng trong thực tế. Do nghịch lý ngày sinh (birthday paradox), tìm va chạm cho hàm băm lý tưởng n bit cần khoảng 2 mũ n/2 lần thử. Với SHA-256 là 2 mũ 128, vượt xa năng lực tính toán hiện có. Với MD5 chỉ là 2 mũ 64 trên lý thuyết, và tấn công thực tế còn nhanh hơn nhiều.
Hàm băm thông thường và hàm băm mật mã khác nhau ra sao?
Lập trình viên dùng hash hằng ngày trong bảng băm (hash table) như từ điển Python, HashMap của Java. Những hàm này khác hẳn hàm băm mật mã:
| Tiêu chí | Hàm băm thông thường | Hàm băm mật mã |
|---|---|---|
| Mục tiêu | Nhanh, phân bố đều để tra cứu, chia nhóm | Chống kẻ tấn công cố tình tạo va chạm hoặc đoán ngược |
| Ví dụ | CRC32, MurmurHash, xxHash | SHA-256, SHA-512, SHA3-256, BLAKE2, BLAKE3 |
| Độ dài đầu ra | Thường 32 hoặc 64 bit | Thường từ 256 bit |
| Chống cố ý giả mạo | Không, tạo va chạm dễ dàng | Có, khi thuật toán còn an toàn |
| Dùng khi nào | Bảng băm, cache, bắt lỗi truyền tin ngẫu nhiên | Chữ ký số, blockchain, chống giả mạo tệp |
Các thuật toán hash phổ biến hiện nay
MD5
MD5 do Ronald Rivest thiết kế, công bố trong RFC 1321 tháng 4/1992, đầu ra 128 bit. Các cặp va chạm MD5 đầu tiên được công bố năm 2004 bởi nhóm của Vương Tiểu Vân (Xiaoyun Wang). RFC 6151 (tháng 3/2011) kết luận MD5 không còn chấp nhận được ở nơi cần kháng va chạm như chữ ký số, và ghi nhận từ khoảng 2006–2007 va chạm đã tìm được trong vài phút, thậm chí vài giây trên máy tính thông thường.
SHA-1 và vụ SHAttered
SHA-1 đầu ra 160 bit, chuẩn hoá trong FIPS 180-1 năm 1995. NIST khuyến cáo ngừng dùng từ 2011 và cấm dùng để tạo chữ ký số từ cuối 2013. Ngày 23/02/2017, CWI Amsterdam và Google công bố SHAttered, va chạm SHA-1 thực tế đầu tiên: hai tệp PDF hiển thị khác nhau nhưng cùng mã SHA-1. Họ cần khoảng 9 tỷ tỷ phép tính SHA-1, tương đương khoảng 6.500 năm CPU và 110 năm GPU. Ngày 15/12/2022, NIST thông báo loại bỏ hoàn toàn SHA-1 trước 31/12/2030 và khuyến nghị chuyển sang SHA-2 hoặc SHA-3 càng sớm càng tốt.
SHA-2 và SHA-256 là gì?
SHA-2 gồm SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 và SHA-512/256, lần đầu chuẩn hoá trong FIPS 180-2 tháng 8/2002, hiện nằm trong FIPS 180-4. SHA-256 là thành viên phổ biến nhất, cho đầu ra 256 bit, có mặt trong chứng chỉ HTTPS, chữ ký số, kiểm tra tệp và Bitcoin. Đến nay chưa có tấn công thực tế nào phá được SHA-256 đầy đủ.
SHA-3 và Keccak
SHA-3 được ban hành trong FIPS 202 ngày 04/08/2015, dựa trên Keccak, thuật toán thắng cuộc thi hàm băm thế hệ mới của NIST. SHA-3 không ra đời vì SHA-2 bị phá mà để có phương án dự phòng với cấu trúc khác hẳn. Họ này gồm SHA3-224/256/384/512 và hai hàm đầu ra tuỳ ý SHAKE128, SHAKE256.
Chi tiết hay gây nhầm: Ethereum dùng Keccak-256, bản Keccak gốc trước khi NIST đổi cách đệm dữ liệu. Vì vậy Keccak-256 và SHA3-256 cho ra mã khác nhau với cùng đầu vào; lập trình cho Ethereum phải dùng đúng Keccak-256.
BLAKE2, BLAKE3 và RIPEMD-160
BLAKE2 phát triển từ BLAKE, một thuật toán vào chung kết cuộc thi SHA-3, mô tả trong RFC 7693 (tháng 11/2015); thuật toán băm mật khẩu Argon2 dùng BLAKE2b bên trong. BLAKE3 công bố tháng 1/2020, bên trong là một cây Merkle nên chạy song song rất tốt và theo nhóm tác giả nhanh hơn MD5, SHA-1, SHA-2, SHA-3. RIPEMD-160 do Hans Dobbertin, Antoon Bosselaers và Bart Preneel công bố năm 1996, nằm trong tiêu chuẩn ISO/IEC 10118-3 và nổi tiếng nhờ được Bitcoin dùng để tạo địa chỉ.
Bảng trạng thái an toàn theo NIST (cập nhật 10/2026)
| Thuật toán | Đầu ra | Trạng thái theo NIST | Ghi chú thực tế |
|---|---|---|---|
| MD5 | 128 bit | Không được NIST phê duyệt | Va chạm từ 2004. Không dùng cho bảo mật |
| SHA-1 | 160 bit | Cấm tạo chữ ký số từ cuối 2013, loại bỏ hoàn toàn trước 31/12/2030 | Va chạm thực tế năm 2017. Cần chuyển đổi |
| SHA-2 | 224–512 bit | Được phê duyệt (FIPS 180-4) | Lựa chọn mặc định hiện nay |
| SHA-3, SHAKE | 224–512 bit, SHAKE tuỳ ý | Được phê duyệt (FIPS 202) | Phương án thay thế, cấu trúc khác SHA-2 |
| BLAKE2, BLAKE3 | Tới 512 bit hoặc tuỳ ý | Không thuộc danh mục FIPS | Rất nhanh, phổ biến trong phần mềm mã nguồn mở |
| RIPEMD-160 | 160 bit | Không thuộc danh mục FIPS | Có trong ISO/IEC 10118-3. Biên va chạm chỉ khoảng 2 mũ 80 |
Lưu ý: Tài liệu lệnh Get-FileHash của Microsoft cũng ghi rõ MD5 và SHA-1 không còn được coi là an toàn, chỉ nên dùng để kiểm tra thay đổi đơn giản. Nếu hệ thống của bạn còn dùng chúng để ký, xác thực hay lưu mật khẩu, hãy lên kế hoạch nâng cấp.
Hash trong blockchain dùng để làm gì?
Hàm băm là viên gạch nền của công nghệ blockchain. Có 4 vai trò chính.
1. Liên kết các khối thành chuỗi
Mỗi khối chứa mã hash của khối liền trước. Trong Bitcoin, tiêu đề khối dài 80 byte gồm phiên bản, hash khối trước, Merkle root, thời gian, độ khó và nonce; hash khối là SHA-256 chạy hai lần trên tiêu đề này. Sửa một giao dịch trong khối cũ thì hash khối đó đổi, khối kế tiếp mất liên kết, và kẻ gian phải tính lại toàn bộ các khối phía sau nhanh hơn cả mạng.
2. Cây Merkle: tóm tắt hàng nghìn giao dịch trong một mã
Cây Merkle (Merkle tree) băm theo từng cặp: mỗi giao dịch thành một lá, hai lá cạnh nhau ghép lại băm tiếp, cứ thế tới đỉnh ra Merkle root. Theo tài liệu nhà phát triển Bitcoin, khi một tầng có số mã lẻ, mã cuối được ghép với bản sao của chính nó.
Lợi ích thứ nhất: so một mã Merkle root là biết danh sách giao dịch có bị sửa hay không. Thứ hai: chứng minh một giao dịch nằm trong khối chỉ cần vài mã dọc theo nhánh, ví dụ khối khoảng 4.000 giao dịch chỉ cần chừng 12 mã. Đây là nền tảng của xác minh thanh toán đơn giản (SPV) trong sách trắng Bitcoin năm 2008, giúp nút nhẹ như ví điện thoại kiểm tra giao dịch mà không lưu cả chuỗi.
3. Câu đố đào trong Proof of Work
Thợ đào liên tục đổi nonce rồi băm tiêu đề khối tới khi được mã nhỏ hơn ngưỡng mục tiêu, tức bắt đầu bằng đủ nhiều số 0. Hàm băm một chiều nên không có đường tắt ngoài thử hàng tỷ tỷ lần, nhưng kiểm tra chỉ cần băm một lần. Sự bất đối xứng này là trái tim của cơ chế bằng chứng công việc. Còn việc mạng chọn và chốt khối thế nào thuộc về cơ chế đồng thuận; các chuỗi Proof of Stake không đào nhưng vẫn cần hash cho liên kết khối và cây Merkle.
4. Tạo địa chỉ ví và mã giao dịch
Với địa chỉ Bitcoin kiểu cũ (bắt đầu bằng số 1), khoá công khai được băm SHA-256, rồi RIPEMD-160 ra 160 bit, sau đó mã hoá Base58Check. Với Ethereum, địa chỉ là 20 byte cuối của mã Keccak-256 của khoá công khai, thêm tiền tố 0x.
Hash được ứng dụng ở đâu ngoài blockchain?
Lưu mật khẩu: băm, thêm salt, dùng thuật toán chậm
Hệ thống đúng chuẩn không lưu mật khẩu mà chỉ lưu mã hash. Khi bạn đăng nhập, mật khẩu được băm lại và so với mã đã lưu. Nhưng người dùng hay đặt mật khẩu dễ đoán, nên kẻ gian có thể băm sẵn hàng tỷ mật khẩu phổ biến thành bảng tra (rainbow table). Các trang “giải mã MD5” thực chất chỉ tra bảng kiểu này. Hai biện pháp bắt buộc:
- Salt (muối): chuỗi ngẫu nhiên riêng cho từng tài khoản, trộn vào mật khẩu trước khi băm. Hai người cùng đặt “123456” sẽ có hai mã khác nhau, bảng tra dựng sẵn vô dụng. Salt lưu cùng mã hash, không cần giữ bí mật.
- Thuật toán chậm, tốn bộ nhớ: hướng dẫn lưu trữ mật khẩu của OWASP khuyến nghị theo thứ tự Argon2id (tối thiểu 19 MiB bộ nhớ, 2 vòng lặp, 1 luồng), scrypt, bcrypt cho hệ thống cũ (hệ số công việc từ 10, giới hạn 72 byte đầu vào), và PBKDF2-HMAC-SHA-256 tối thiểu 600.000 vòng khi cần tuân thủ FIPS-140.
Không dùng MD5, SHA-1 hay cả SHA-256 thuần để lưu mật khẩu. OWASP nêu rõ hàm băm nhanh như SHA-256 cho phép kẻ tấn công thử rất nhiều lần đoán trong thời gian ngắn. Bài học thật: tháng 6/2012, LinkedIn xác nhận khoảng 6,5 triệu mã hash mật khẩu bị đăng lên mạng; chúng được băm SHA-1 không salt nên nhiều mật khẩu bị dò ra nhanh. Năm 2016, dữ liệu khoảng 117 triệu tài khoản từ cùng vụ việc tiếp tục bị rao bán.
Kiểm tra tính toàn vẹn của tệp tải về
Nhiều nhà phát hành công bố mã hash cạnh tệp cài đặt, ví dụ trang phát hành Ubuntu có tệp SHA256SUMS kèm chữ ký SHA256SUMS.gpg. Sau khi tải, bạn tự tính mã rồi so:
- Windows (PowerShell): Get-FileHash ten-tep.iso, mặc định dùng SHA-256.
- Linux: sha256sum ten-tep.iso.
- macOS: shasum -a 256 ten-tep.iso.
Mã khớp nghĩa là tệp không lỗi và không bị chèn mã độc dọc đường. Nhưng mã hash chỉ đáng tin khi lấy từ nguồn đáng tin, vì kẻ chiếm được trang tải có thể thay cả tệp lẫn mã; vì vậy dự án lớn còn ký số lên danh sách mã. Trong các dự án số hoá tài liệu, lưu mã hash của từng tệp scan giúp chứng minh tệp không bị chỉnh sửa và phát hiện tệp trùng lặp.
Chữ ký số
Chữ ký số không ký lên toàn bộ văn bản mà băm văn bản ra mã hash rồi dùng khoá bí mật ký lên mã đó. Người nhận băm lại văn bản, dùng khoá công khai kiểm tra chữ ký và so mã. Sửa một dấu phẩy là chữ ký mất hiệu lực. Vì thế va chạm là thảm hoạ: tạo được hai văn bản cùng mã, kẻ gian có thể xin ký văn bản vô hại rồi gắn chữ ký sang văn bản gây hại. Hash còn được dùng trong mã xác thực thông điệp HMAC và khử trùng lặp dữ liệu.
Hash khác mã hoá như thế nào?
Nhiều người nói “mã hoá mật khẩu bằng MD5”, nhưng MD5 không mã hoá, nó băm. Bảng sau phân biệt hash, mã hoá (encryption) và encoding như Base64:
| Tiêu chí | Hash (băm) | Mã hoá | Encoding (Base64) |
|---|---|---|---|
| Mục đích | Nhận diện, kiểm tra toàn vẹn | Giữ bí mật nội dung | Đổi định dạng để truyền, lưu |
| Đảo ngược được không | Không | Có, nếu có khoá | Có, ai cũng giải được |
| Cần khoá không | Không (trừ HMAC) | Có | Không |
| Độ dài đầu ra | Cố định | Tương đương hoặc lớn hơn gốc | Lớn hơn gốc khoảng một phần ba |
| Ví dụ | SHA-256, SHA-3, BLAKE2 | AES, RSA | Base64, URL encoding |
Quy tắc nhớ nhanh: cần đọc lại nội dung thì mã hoá; chỉ cần kiểm tra “có đúng là nó không” thì băm.
Tiêu chuẩn và quy định tại Việt Nam liên quan tới hàm băm
Bộ tiêu chuẩn quốc gia TCVN 11816 “Công nghệ thông tin – Các kỹ thuật an toàn – Hàm băm” được Bộ Khoa học và Công nghệ công bố năm 2017, do Cục Quản lý mật mã dân sự và Kiểm định sản phẩm mật mã biên soạn, Ban Cơ yếu Chính phủ đề nghị. Bộ gồm 4 phần: tổng quan; hàm băm dùng mã khối n bit; hàm băm chuyên dụng; hàm băm dùng số học đồng dư. TCVN 11816-3:2017 tương đương ISO/IEC 10118-3:2004 kèm sửa đổi 1:2006, phiên bản quốc tế có chứa SHA-1, SHA-256, SHA-512 và RIPEMD-160.
Luật Giao dịch điện tử số 20/2023/QH15 (hiệu lực từ 01/07/2024) định nghĩa chữ ký số là chữ ký điện tử dùng thuật toán khoá không đối xứng, gồm khoá bí mật để ký và khoá công khai để kiểm tra. Nghị định 23/2025/NĐ-CP ngày 21/02/2025 về chữ ký điện tử và dịch vụ tin cậy dùng khái niệm “mã bảo đảm toàn vẹn thông điệp dữ liệu”, tức dãy ký tự để kiểm tra tính toàn vẹn của thông điệp; trên thực tế chức năng này thường do hàm băm mật mã đảm nhận. Doanh nghiệp dùng chữ ký số, hoá đơn điện tử hay lưu trữ chứng từ nên rà soát để chắc hệ thống đã bỏ SHA-1. Khung pháp lý về tài sản số được tổng hợp trong bài blockchain tại Việt Nam và pháp lý tài sản số.
Những hiểu lầm phổ biến về hash
- “Mã hash là duy nhất tuyệt đối.” Va chạm luôn tồn tại về lý thuyết; thuật toán tốt chỉ khiến việc tìm ra chúng bất khả thi trong thực tế.
- “SHA-256 an toàn nên lưu mật khẩu là đủ.” SHA-256 an toàn về va chạm nhưng quá nhanh. Mật khẩu cần Argon2id hoặc bcrypt.
- “Blockchain không sửa được vì đã mã hoá.” Dữ liệu trên blockchain công khai thường không bị mã hoá. Nó khó sửa nhờ chuỗi hash liên kết và cơ chế đồng thuận.
- “Máy tính lượng tử sẽ phá ngay mọi hàm băm.” Theo NIST, thuật toán Grover chỉ giảm số bước vét cạn ở mức căn bậc hai, và lợi thế thực tế còn nhỏ hơn vì các bước phải chạy tuần tự. Rủi ro lượng tử lớn hơn nằm ở chữ ký dùng RSA, ECDSA.
Lưu ý: Nội dung về blockchain trong bài chỉ mang tính giải thích kỹ thuật, không phải khuyến nghị đầu tư. Đào, nắm giữ hay giao dịch tài sản mã hoá có rủi ro mất vốn, rủi ro kỹ thuật và rủi ro pháp lý.
Câu hỏi thường gặp
Mã hash có giải ngược ra dữ liệu gốc được không?
Không. Hàm băm mật mã là hàm một chiều, không có khoá hay thao tác giải mã. Cách duy nhất là đoán đầu vào rồi băm thử để so, nên dữ liệu ngắn, dễ đoán như mật khẩu “123456” vẫn bị dò ra nếu không có salt và thuật toán chậm.
SHA-256 đã bị phá chưa?
Chưa. Tính đến tháng 10/2026, NIST vẫn phê duyệt SHA-256 trong FIPS 180-4 và chưa có tấn công thực tế nào tìm được va chạm hay tiền ảnh của SHA-256 đầy đủ.
MD5 còn dùng được không?
Chỉ để phát hiện lỗi ngẫu nhiên, như so nhanh hai tệp nội bộ. Không dùng MD5 cho chữ ký số, chứng chỉ, mật khẩu hay nơi có người cố tình làm giả dữ liệu.
Salt là gì? Có cần giữ bí mật salt không?
Salt là chuỗi ngẫu nhiên riêng cho từng tài khoản, trộn vào mật khẩu trước khi băm để hai mật khẩu giống nhau ra hai mã khác nhau. Salt lưu cùng mã hash và không cần giữ bí mật. Một số hệ thống thêm “pepper”, giá trị bí mật dùng chung, lưu tách khỏi cơ sở dữ liệu.
Bitcoin và Ethereum dùng thuật toán hash nào?
Bitcoin dùng SHA-256 hai lần cho hash khối, cây Merkle và Proof of Work, cùng RIPEMD-160 khi tạo địa chỉ kiểu cũ. Ethereum dùng Keccak-256, bản Keccak gốc cho kết quả khác SHA3-256 chuẩn NIST.
Hashrate là gì?
Hashrate là số phép băm một máy đào hoặc cả mạng thực hiện mỗi giây, đo bằng đơn vị như TH/s (nghìn tỷ phép băm mỗi giây). Hashrate càng cao, chi phí để một bên viết lại lịch sử chuỗi Proof of Work càng lớn.