Hàm băm là gì, SHA-256 giữ an toàn cho Bitcoin thế nào?
Hàm băm biến dữ liệu bất kỳ thành mã 256 bit không suy ngược được. Xem ví dụ chạy thật, cách Bitcoin dùng SHA-256 và vì sao Ethereum dùng Keccak-256.
Mục lục 12 phần
- 01Hàm băm là gì?
- 02Hàm băm mật mã cần những tính chất gì?
- 03SHA-256 là gì?
- 042^256 lớn cỡ nào? Vì sao không ai đoán được?
- 05Bitcoin dùng SHA-256 ở những đâu?
- 06Đào coin dùng hàm băm thế nào?
- 07Vì sao sửa một khối cũ gần như không thể?
- 08Ethereum dùng Keccak-256, khác SHA-3 thế nào?
- 09Hàm băm khác mã hóa thế nào?
- 10Kiểm tệp tải về bằng mã SHA-256
- 11Pháp luật Việt Nam nói gì về hàm băm?
- 12Máy tính lượng tử có phá được SHA-256 không?
- Câu hỏi thường gặp
- Nguồn tham khảo
Tóm tắt nhanh
- Hàm băm (hash function) biến dữ liệu dài bao nhiêu cũng được thành một mã độ dài cố định. SHA-256 luôn cho 256 bit, tức 64 ký tự hex, dù đầu vào là 1 chữ hay 1 triệu chữ.
- Đổi một chữ hoa thành chữ thường, mã SHA-256 của "VietnamBit" đổi 133 trên 256 bit. Không ai đoán được mã mới từ mã cũ.
- Bitcoin băm SHA-256 hai lần để tạo mã khối và TxID (mã định danh giao dịch). Mã khối 973.969 (31/10/2026) mở đầu bằng 19 số 0 hex, kết quả của trung bình khoảng 6,37 × 10^23 lần băm trên toàn mạng.
- Dò ngược hoặc tìm va chạm SHA-256 bằng vét cạn cần ít nhất khoảng 2^128 lần băm. Với tốc độ của cả mạng Bitcoin (khoảng 1,065 × 10^21 lần băm mỗi giây, đo 31/10/2026), con số đó tương ứng khoảng 10,1 tỷ năm.
- Ethereum dùng Keccak-256, gần giống nhưng không trùng SHA3-256 của NIST (Viện Tiêu chuẩn và Công nghệ Hoa Kỳ): cùng đầu vào rỗng, hai hàm cho hai mã khác nhau.

Hàm băm (hash function) là phép tính biến dữ liệu dài bao nhiêu cũng được thành một mã có độ dài cố định, gọi là mã băm. Cùng đầu vào luôn ra cùng mã, đổi một ký tự thì mã đổi hẳn, và không ai tính ngược được từ mã ra dữ liệu gốc.
Bitcoin dựa vào SHA-256, một hàm băm do NIST (Viện Tiêu chuẩn và Công nghệ Hoa Kỳ) chuẩn hóa, để nối các khối thành chuỗi, đặt tên cho giao dịch và làm bài toán đào coin. Mọi ví dụ trong bài, VietnamBit tự chạy bằng Python và in đúng kết quả.
Hàm băm là gì?
Hàm băm nhận đầu vào bất kỳ và trả ra một mã cố định độ dài, giống dấu vân tay của dữ liệu. Với SHA-256, mã luôn dài 256 bit (bit là chữ số nhị phân 0 hoặc 1), tức 32 byte, thường viết thành 64 ký tự hex (hệ thập lục phân, dùng chữ số 0–9 và chữ a–f).
Ví dụ chạy bằng thư viện hashlib của Python 3.9 ngày 31/10/2026:
| Đầu vào | Mã SHA-256 (8 ký tự đầu … 4 ký tự cuối) |
|---|---|
| VietnamBit | c748b199 … d0c0 |
| vietnamBit (chỉ đổi chữ V thành v) | 203cc975 … 3a12 |
| VietnamBit. (thêm dấu chấm) | 57117c65 … 52cc |
| Chuỗi rỗng | e3b0c442 … b855 |
| 1 triệu chữ x | Vẫn đúng 64 ký tự hex |
Mã đầy đủ của “VietnamBit” là c748b199ddbca8a09018eb7c6d3d8d93e81b5153734411349c7eabf5efd5d0c0. Trên macOS, bạn tự kiểm được bằng lệnh printf 'VietnamBit' | shasum -a 256 và sẽ thấy đúng chuỗi này.
Chỉ đổi V hoa thành v thường, VietnamBit so từng bit và thấy 133 trong 256 bit đổi giá trị, khoảng 52%. Thêm một dấu chấm thì đổi 128 bit, đúng một nửa. Tính chất này gọi là hiệu ứng tuyết lở: thay đổi nhỏ ở đầu vào làm mã đổi gần như ngẫu nhiên.
Hàm băm mật mã cần những tính chất gì?
Một hàm băm dùng cho bảo mật phải khiến việc tìm ngược và tìm hai đầu vào trùng mã đều bất khả thi trên thực tế. Chuẩn FIPS (bộ chuẩn xử lý thông tin của chính phủ Mỹ) số 180-4 gọi các thuật toán SHA (Secure Hash Algorithm, thuật toán băm an toàn) là “secure” vì hai điều này “computationally infeasible” (không thể làm được bằng tính toán).
| Tính chất | Nghĩa là | Độ mạnh của SHA-256 theo NIST |
|---|---|---|
| Tất định | Cùng đầu vào luôn ra cùng mã | Không áp dụng |
| Một chiều (kháng tiền ảnh) | Có mã, không tìm được đầu vào | 256 bit |
| Kháng tiền ảnh thứ hai | Có một đầu vào, không tìm được đầu vào khác cùng mã | 201–256 bit |
| Kháng va chạm | Không tìm được hai đầu vào bất kỳ cùng mã | 128 bit |
| Tuyết lở | Đổi 1 ký tự, khoảng một nửa số bit đổi | Không áp dụng |
Nguồn cột cuối: NIST SP (Special Publication, ấn phẩm hướng dẫn của NIST) 800-107 bản sửa đổi 1, bảng 1. “Độ mạnh 128 bit” nghĩa là kẻ tấn công cần khoảng 2^128 phép tính.
Vì sao kháng va chạm chỉ còn một nửa độ dài mã? NIST viết độ kháng va chạm kỳ vọng của hàm băm “is, in general, half the length of its hash value”. Lý do là khi so nhiều cặp cùng lúc, xác suất gặp hai mã trùng tăng nhanh hơn nhiều so với tìm trúng một mã cho trước.
SHA-256 là gì?
SHA-256 là thuật toán băm trong nhóm SHA-2, được NIST chuẩn hóa trong FIPS 180-4 bản tháng 8/2015. Cùng chuẩn này còn có SHA-1, SHA-224, SHA-384, SHA-512 và hai biến thể SHA-512/224, SHA-512/256.
Các thông số chính theo FIPS 180-4:
- Đầu vào: dài dưới 2^64 bit, tức hơn 2 triệu terabyte, đủ cho mọi tệp thực tế.
- Cách xử lý: chia dữ liệu thành từng khối 512 bit, mỗi khối thành 16 từ 32 bit, rồi trộn qua 64 vòng tính.
- Hằng số: 64 số 32 bit lấy từ phần thập phân của căn bậc ba 64 số nguyên tố đầu tiên. Ai cũng kiểm được, không có “số bí mật” nào.
- Đầu ra: 256 bit.
FIPS 180-4 viết các hàm băm này thường được dùng cùng thuật toán chữ ký số, mã xác thực tin nhắn và việc sinh số ngẫu nhiên. Bitcoin không phát minh SHA-256 mà dùng một chuẩn công khai có sẵn.
2^256 lớn cỡ nào? Vì sao không ai đoán được?
SHA-256 có 2^256 mã khả dĩ, một số có 78 chữ số, khoảng 1,16 × 10^77. Không máy tính nào thử hết được, kể cả toàn bộ mạng đào Bitcoin.
Ví dụ tính tay, lấy tốc độ cả mạng Bitcoin khoảng 1.065 EH/s, tức 1,065 × 10^21 lần băm mỗi giây (ước tính trung bình 3 ngày của mempool.space, một trình khám phá khối Bitcoin, ngày 31/10/2026; đơn vị giải thích ở bài hashrate là gì):
- Tìm va chạm cần khoảng 2^128 ≈ 3,4 × 10^38 lần băm.
- Thời gian: 3,4 × 10^38 / 1,065 × 10^21 ≈ 3,19 × 10^17 giây.
- Đổi ra năm: 3,19 × 10^17 / (365,25 × 86.400) ≈ 10,1 tỷ năm.
Đây là phép giả định để thấy độ lớn: máy đào ASIC (máy chuyên dụng chỉ làm một phép tính) chỉ băm phần đầu khối Bitcoin, không chạy được bài toán khác. Tìm ngược một mã cho trước còn khó hơn nữa, cần khoảng 2^256 lần thử.
Vì vậy, lời chào bán “phần mềm giải mã SHA-256”, “tool dò ví” để lấy lại hoặc chiếm tài sản đều đi ngược con số trên. Khóa riêng tư cũng nằm trong không gian lớn tương tự; lý do không ai dò ra được có ở bài private key là gì.
Bitcoin dùng SHA-256 ở những đâu?
Bitcoin dùng SHA-256 băm hai lần cho mã khối và mã giao dịch, và dùng thêm RIPEMD-160 để rút gọn một số kiểu địa chỉ. Bitcoin Developer Reference ghi các công thức dưới đây.
| Chỗ dùng | Công thức | Để làm gì |
|---|---|---|
| Mã khối | SHA256(SHA256(đầu khối 80 byte)) | Định danh khối, làm bài toán đào |
| Liên kết khối | Đầu khối chứa mã của khối trước | Nối các khối thành chuỗi |
| TxID | SHA256(SHA256(giao dịch)) | Mã định danh giao dịch |
| Địa chỉ P2PKH, P2SH | RIPEMD-160(SHA256(khóa công khai hoặc script)) | Rút gọn thành 20 byte |
| Mã gốc Merkle | Băm từng cặp giao dịch tới khi còn một mã | Gom mọi giao dịch trong khối |
RIPEMD-160 là một hàm băm khác cho mã 160 bit. Khóa công khai là mã sinh ra từ khóa riêng tư, dùng để kiểm chữ ký; script là đoạn lệnh đặt điều kiện chi tiêu. P2PKH và P2SH là hai kiểu địa chỉ Bitcoin đời đầu, bắt đầu bằng số 1 và số 3; các kiểu địa chỉ khác có ở bài địa chỉ bitcoin Legacy, SegWit, Taproot.
TxID (mã định danh giao dịch) bạn dán vào trình khám phá khối để tra giao dịch chính là một mã băm như vậy. Trình khám phá khối là trang web cho tra cứu khối, giao dịch, địa chỉ trên blockchain. Còn cách cây Merkle gom hàng nghìn giao dịch thành một mã gốc được giải thích ở bài Merkle tree và nonce là gì.
Sách trắng Bitcoin (mục 2) cũng dùng hàm băm ở chữ ký: mỗi chủ sở hữu ký lên “a hash of the previous transaction and the public key of the next owner”. Người ký không ký cả khối dữ liệu dài mà ký lên mã băm của nó.
Kiểm thật: tự tính lại mã khối của Bitcoin
Lấy 80 byte đầu khối, băm SHA-256 hai lần, đảo thứ tự byte, sẽ ra đúng mã khối mà mọi trình khám phá đang hiển thị. VietnamBit làm thử với hai khối.
Khối 0 (khối nguồn gốc, ngày 3/1/2009 giờ UTC) có đầu khối gồm: phiên bản 1, mã khối trước toàn số 0, mã gốc Merkle 4a5e1e4b…deda33b, thời gian 1231006505, nBits (trường ghi ngưỡng mục tiêu ở dạng nén) 0x1d00ffff, nonce (số thợ đào thay đổi khi đào) 2.083.236.893 (mempool.space). Ghép đủ 80 byte rồi băm hai lần, ra:
000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
Đúng mã khối 0 mà mempool.space trả về. Nếu chỉ băm một lần thì ra 6dd6c571…1e0342af, sai hẳn. Đảo thứ tự byte là vì Bitcoin Developer Reference ghi các mã băm được lưu ở “internal byte order” (thứ tự byte nội bộ), còn trình khám phá in theo chiều ngược lại.
Khối 973.969 (đào lúc 18:13 ngày 31/10/2026 giờ Việt Nam) cho kết quả tương tự: VietnamBit tải 80 byte đầu khối từ mempool.space, băm hai lần và ra đúng mã 000000000000000000019d64…17cd91eb. Mã này mở đầu bằng 19 số 0 hex, tức 76 bit 0.
Đào coin dùng hàm băm thế nào?
Thợ đào thay đổi một con số trong đầu khối rồi băm lại, cho tới khi mã khối nhỏ hơn hoặc bằng một ngưỡng gọi là mục tiêu. Sách trắng (mục 4) viết công việc này “is exponential in the number of zero bits required and can be verified by executing a single hash”.
Câu đó có hai nửa. Tìm ra kết quả tốn rất nhiều lần thử, nhưng kiểm kết quả chỉ cần băm một lần. Đây là lõi của cơ chế bằng chứng công việc (proof of work, PoW: ai bỏ công tính toán nhiều thì được quyền thêm khối).
Ví dụ thu nhỏ do VietnamBit chạy
Tìm số n nhỏ nhất để SHA-256 của chuỗi “VietnamBit-n” mở đầu bằng các số 0.
| Yêu cầu | Số lần thử trung bình | Kết quả chạy thật |
|---|---|---|
| 4 số 0 hex | 16^4 = 65.536 | n = 6.399, mã 0000dabc… |
| 5 số 0 hex | 16^5 = 1.048.576 | n = 637.809, mã 00000bdf… |
Mỗi số 0 hex thêm vào làm số lần thử trung bình tăng 16 lần. Lần chạy 4 số 0 gặp may, tìm ra sớm hơn mức trung bình.
Với khối 973.969, trường nBits 386.000.300 cho ngưỡng mục tiêu bắt đầu bằng 19 số 0 hex. VietnamBit tính 2^256 chia cho ngưỡng này được khoảng 6,37 × 10^23: đó là số lần băm trung bình cả mạng phải làm để tìm một khối.
Con số trong đầu khối mà thợ đào thay liên tục gọi là nonce (số chỉ dùng một lần), giải thích ở bài Merkle tree và nonce. Cách độ khó tự điều chỉnh có ở bài hashrate là gì, toàn cảnh việc đào ở bài đào coin là gì.
Vì sao sửa một khối cũ gần như không thể?
Mỗi khối chứa mã băm của khối trước, nên sửa một giao dịch cũ làm đổi mã của khối đó và của mọi khối sau. Sách trắng (mục 3) mô tả mỗi dấu thời gian chứa dấu thời gian trước trong mã băm của nó, tạo thành chuỗi.
Chuỗi phản ứng khi sửa một giao dịch trong khối cũ:
- TxID của giao dịch đổi.
- Mã gốc Merkle trong đầu khối đổi.
- Mã khối đổi, và gần như chắc chắn không còn nhỏ hơn mục tiêu, nên phải đào lại.
- Khối kế tiếp đang ghi mã khối cũ, nên cũng phải sửa và đào lại, cứ thế tới khối mới nhất.
Kẻ sửa phải đào lại tất cả các khối đó nhanh hơn phần còn lại của mạng. Sách trắng (mục 4) viết khi các khối sau đã nối vào, công sức để đổi một khối “would include redoing all the blocks after it”. Kịch bản một bên nắm quá nửa sức đào có ở bài tấn công 51%, cách các khối nối nhau ở bài blockchain là gì.
Ethereum dùng Keccak-256, khác SHA-3 thế nào?
Ethereum dùng Keccak-256, phiên bản gốc của thuật toán sau này thành SHA-3, nên mã của nó khác SHA3-256 của NIST. Theo ethereum.org, địa chỉ tài khoản là 20 byte cuối của mã Keccak-256 của khóa công khai, thêm “0x” ở đầu.
Bảng thuật ngữ của ethereum.org viết Keccak-256 “was standardized as SHA-3”. Câu này dễ gây hiểu nhầm. Chuẩn FIPS 202 của NIST (8/2015) nói SHA-3 “differ slightly” so với Keccak dự thi: SHA-3 thêm hai bit “01” vào cuối dữ liệu trước khi băm. Hai bit đó đủ làm mã khác hoàn toàn.
| Đầu vào | Keccak-256 (Ethereum) | SHA3-256 (NIST) |
|---|---|---|
| Chuỗi rỗng | c5d24601 … 5d85a470 | a7ffc6f8 … 80f8434a |
| abc | 4e03657a … a12d6c45 | 3a985da7 … 11431532 |
SHA3-256 tính bằng hashlib. Keccak-256 không có trong hashlib, VietnamBit chạy một bản cài đặt Python ngắn và kiểm nó bằng cách đổi phần đệm sang kiểu SHA-3: kết quả khớp hashlib với mọi đầu vào thử. Người viết phần mềm cho Ethereum dùng nhầm hàm SHA3-256 của thư viện chuẩn sẽ ra địa chỉ sai.
Hàm băm khác mã hóa thế nào?
Mã hóa có khóa để giải ngược lại; hàm băm không có khóa và không giải ngược được. Hai thứ hay bị gọi lẫn vì đều thuộc mật mã học.
| Mã hóa | Hàm băm | |
|---|---|---|
| Có khóa không | Có | Không |
| Lấy lại dữ liệu gốc | Được, nếu có khóa | Không |
| Độ dài đầu ra | Theo độ dài dữ liệu | Cố định (SHA-256: 256 bit) |
| Ví dụ | Mã hóa tin nhắn, ổ đĩa | Mã khối, TxID, lưu mật khẩu, kiểm tệp |
Một ứng dụng quen thuộc là lưu mật khẩu. NIST SP 800-63B-4 (8/2025) yêu cầu mật khẩu “SHALL be salted and hashed using a suitable password hashing scheme”, với salt (chuỗi ngẫu nhiên thêm vào) dài ít nhất 32 bit. Nhờ vậy dù cơ sở dữ liệu bị lộ, kẻ trộm chỉ thấy mã băm.
Hệ quả cho người dùng: một dịch vụ làm đúng chuẩn không thể gửi lại mật khẩu cũ cho bạn, chỉ cho bạn đặt mật khẩu mới. Nhân viên nào nói “đọc được mật khẩu của bạn trong hệ thống” là dấu hiệu đáng ngờ.
Kiểm tệp tải về bằng mã SHA-256
So mã SHA-256 của tệp vừa tải với mã nhà phát triển công bố để biết tệp có bị sửa không. Nhiều nhà phát triển phần mềm công bố mã băm kèm tệp cài đặt. Mã bạn tự tính khớp từng ký tự thì tệp nguyên vẹn.
Lệnh có sẵn trên máy tính:
- Windows (PowerShell):
Get-FileHash <tên tệp>. Theo tài liệu Microsoft Learn, lệnh này mặc định dùng SHA256. - macOS, Linux:
shasum -a 256 <tên tệp>.
Mã băm chỉ có ích khi bạn lấy nó từ trang chính thức của nhà phát triển. Kẻ gian dựng trang giả thì cũng đăng mã băm khớp với tệp độc của chúng. Phần mềm cài đặt ví nhiễm mã độc là một chiêu được mô tả ở bài mã độc đánh cắp ví crypto.
Pháp luật Việt Nam nói gì về hàm băm?
Pháp luật Việt Nam không quy định thuật toán băm, chỉ định nghĩa tài sản mã hóa theo chức năng xác thực bằng công nghệ. Nghị quyết 05/2025/NQ-CP và Luật Công nghiệp công nghệ số đều dùng cùng một định nghĩa.
Nguyên văn: tài sản mã hóa là tài sản số “sử dụng công nghệ mã hóa hoặc công nghệ số có chức năng tương tự để xác thực đối với tài sản trong quá trình tạo lập, phát hành, lưu trữ, chuyển giao” (Nghị quyết 05/2025/NQ-CP Điều 3 khoản 2; Luật 71/2025/QH15 Điều 47 khoản 2 điểm b).
Hàm băm và chữ ký số là phần “xác thực” trong định nghĩa đó. Nghị quyết 05 không nhắc tên SHA-256 hay thuật toán băm nào. Hiểu cách băm giúp bạn đọc đúng một TxID hay một báo cáo dự trữ, nhưng không thay đổi nguyên tắc chỉ tổ chức được Bộ Tài chính cấp phép mới được cung cấp dịch vụ liên quan đến tài sản mã hóa (Nghị quyết 05/2025/NQ-CP Điều 4 khoản 4).
Máy tính lượng tử có phá được SHA-256 không?
Mối lo lượng tử với Bitcoin nằm ở chữ ký số, không nằm ở SHA-256. Thuật toán Grover chỉ tăng tốc bậc hai khi dò hàm băm. Với việc đào Bitcoin, whitepaper của nhóm Google (31/03/2026) viết lợi thế này “all but consumed by the overheads of quantum error correction” (gần như bị chi phí sửa lỗi lượng tử tiêu hết). Chi tiết, kèm loại địa chỉ dễ bị tổn thương, ở bài máy tính lượng tử có phá được bitcoin không.
Chia sẻ bài viết
Liên quan
- Kiến thức nềnBằng chứng dự trữ (proof of reserves) là gì?
- Kiến thức nềnOrdinals, BRC-20, Runes là gì, tạo token trên bitcoin thế nào?
- Kiến thức nềnNạp, rút coin là gì, rút từ sàn về ví tự quản sao cho an toàn?
- Kiến thức nềnOTC là gì, mua bán OTC tài sản mã hóa có hợp pháp không?
Bắt đầu từ cơ bản: Tài sản mã hóa cho người mới: 10 điều cần biết trước khi mua
Câu hỏi thường gặp
Có trang web nào giải mã được SHA-256 không?
Không trang nào tính ngược được mã SHA-256. Các trang "tra ngược" chỉ lưu sẵn mã của những chuỗi phổ biến (mật khẩu thông dụng, từ điển) rồi so khớp. Vì vậy hệ thống lưu mật khẩu phải thêm chuỗi ngẫu nhiên (salt) trước khi băm, để cùng một mật khẩu cho ra mã khác nhau ở mỗi tài khoản.
MD5, SHA-1 còn dùng được không?
Không nên dùng cho việc cần chống giả mạo. MD5 là hàm băm cũ cho mã 128 bit. RFC 6151 (văn bản chuẩn Internet, 3/2011) viết MD5 "no longer acceptable" khi cần kháng va chạm, ví dụ chữ ký số. NIST thông báo ngày 15/12/2022 rằng SHA-1 nên bị loại bỏ chậm nhất ngày 31/12/2030, thay bằng nhóm SHA-2 hoặc SHA-3.
Mã băm có phải là địa chỉ ví không?
Không hẳn. Phần lớn địa chỉ ví được tạo từ mã băm của khóa công khai, cộng thêm phần mã hóa định dạng. Ở Ethereum, địa chỉ là 20 byte cuối của mã Keccak-256 của khóa công khai, thêm 0x ở đầu. Ngoại lệ là địa chỉ Taproot của Bitcoin (bắt đầu bằng bc1p), chứa thẳng khóa công khai chứ không qua băm. Dù loại nào, biết địa chỉ cũng không suy ra được khóa riêng tư.
SHA-256 trong đào Bitcoin có giống SHA-256 trong HTTPS hay chữ ký số không?
Cùng một thuật toán theo chuẩn FIPS 180-4. Khác ở cách dùng: Bitcoin băm phần đầu khối 80 byte hai lần liên tiếp, còn các hệ thống khác thường băm một lần rồi đưa mã vào thuật toán chữ ký hoặc xác thực.
Hai tệp khác nhau có thể cho cùng mã SHA-256 không?
Về lý thuyết có, vì số đầu vào là vô hạn còn số mã chỉ có 2^256. Nhưng theo NIST, tìm được một cặp như vậy cần khoảng 2^128 phép tính, nên trên thực tế coi như không làm được.
Nguồn tham khảo 16
Kiểm chứng ngày 31/10/2026
- 01NIST FIPS 180-4 (8/2015): Secure Hash Standard (SHS)nvlpubs.nist.gov
- 02NIST SP 800-107 bản sửa đổi 1 (8/2012): độ mạnh an ninh của các hàm băm được phê duyệt, mục 4.2nvlpubs.nist.gov
- 03NIST FIPS 202 (8/2015): SHA-3 Standard, mục 6.1nvlpubs.nist.gov
- 04NIST (15/12/2022): NIST Retires SHA-1 Cryptographic Algorithmnist.gov
- 05NIST SP 800-63B-4 (8/2025): lưu mật khẩu bằng cơ chế băm có saltpages.nist.gov
- 06Satoshi Nakamoto (2008): Bitcoin, a peer-to-peer electronic cash system (mục 2, 3, 4)bitcoin.org
- 07Bitcoin Developer Reference: Block chain (block headers), truy cập 31/10/2026developer.bitcoin.org
- 08Bitcoin Developer Reference: Transactions (TXID, P2PKH, P2SH), truy cập 31/10/2026developer.bitcoin.org
- 09mempool.space API: khối 0 và khối 973.969, ước tính hashrate, truy vấn 31/10/2026mempool.space
- 10ethereum.org: Accounts (địa chỉ từ Keccak-256), truy cập 31/10/2026ethereum.org
- 11ethereum.org: Glossary (Keccak-256), truy cập 31/10/2026ethereum.org
- 12RFC 6151 (3/2011): Updated Security Considerations for MD5rfc-editor.org
- 13Microsoft Learn: Get-FileHash (PowerShell), mặc định SHA256, truy cập 31/10/2026learn.microsoft.com
- 14Babbush, Gidney và cộng sự (Google, arXiv 30/03/2026): Securing Elliptic Curve Cryptocurrencies against Quantum Vulnerabilitiesarxiv.org
- 15Chính phủ: toàn văn Nghị quyết 05/2025/NQ-CP về thí điểm thị trường tài sản mã hóaxaydungchinhsach.chinhphu.vn
- 16Công báo: Luật Công nghiệp công nghệ số 71/2025/QH15congbao.chinhphu.vn


