Trình tạo Hash SHA-256

Tạo hash SHA-256 từ bất kỳ văn bản nào

Văn bản nhập

Chạy cục bộ · An toàn để dán thông tin bí mật

Hash SHA-256

Hash SHA-256 sẽ xuất hiện ở đây…

SHA-256 Hashing là gì?

SHA-256 (Thuật toán băm an toàn 256-bit) là hàm băm mật mã thuộc họ SHA-2, được NIST công bố năm 2001 trong FIPS 180-2 (cập nhật trong FIPS 180-4). Với bất kỳ đầu vào nào — một ký tự đơn, tệp nhiều gigabyte, hoặc chuỗi rỗng — SHA-256 tạo ra một giá trị băm cố định 256-bit (32 byte), thường hiển thị dưới dạng 64 ký tự thập lục phân. SHA-256 là hàm băm được triển khai rộng rãi nhất trong các hệ thống production hiện nay, làm nền tảng cho chuỗi chứng chỉ TLS, cơ chế proof-of-work của Bitcoin, Subresource Integrity (SRI) và quy trình ký mã.

SHA-256 là hàm một chiều: tính toán giá trị băm từ đầu vào rất nhanh (hàng trăm megabyte mỗi giây trên phần cứng hiện đại), nhưng đảo ngược quá trình — tìm đầu vào tạo ra giá trị băm đã cho — là không khả thi về mặt tính toán. Thuộc tính này, được gọi là khả năng kháng tiền ảnh, khiến SHA-256 phù hợp cho băm mật khẩu (kết hợp với salt và key-stretching), chữ ký số và xác minh tính toàn vẹn dữ liệu. Không giống MD5 và SHA-1, chưa có cuộc tấn công va chạm hay tiền ảnh nào được chứng minh với SHA-256 đầy đủ.

Họ SHA-2 gồm sáu biến thể: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 và SHA-512/256. SHA-256 hoạt động trên các từ 32-bit với 64 vòng mỗi khối, được tối ưu hóa cho bộ xử lý 32-bit. SHA-512 sử dụng các từ 64-bit và 80 vòng, có thể nhanh hơn trên nền tảng 64-bit. Đối với hầu hết các ứng dụng cần giá trị băm 256-bit, SHA-256 vẫn là khuyến nghị mặc định từ NIST, IETF và CA/Browser Forum.

Tại sao dùng công cụ tạo SHA-256 trực tuyến?

Thông thường, tạo giá trị băm SHA-256 đòi hỏi lệnh terminal hoặc vài dòng code. Công cụ trên trình duyệt này cho phép bạn tính toán giá trị băm SHA-256 mà không cần cài đặt bất cứ thứ gì, chuyển đổi ngữ cảnh hay viết thêm script.

Băm tức thì trong trình duyệt
Dán hoặc nhập bất kỳ văn bản nào và nhận giá trị băm SHA-256 ngay lập tức. Web Crypto API xử lý phép tính trực tiếp — không cần thư viện JavaScript bổ sung.
🔒
Xử lý ưu tiên quyền riêng tư
Dữ liệu đầu vào của bạn không bao giờ rời khỏi thiết bị. Toàn bộ quá trình băm chạy cục bộ qua Web Crypto API tích hợp sẵn của trình duyệt. Không có dữ liệu nào được truyền đến bất kỳ máy chủ nào.
📋
Định dạng đầu ra sẵn sàng để sao chép
Lấy giá trị băm dạng hex chữ thường hoặc chữ hoa chỉ với một cú nhấp. Hữu ích khi đối chiếu checksum từ trình quản lý gói, CI pipeline hoặc tài liệu.
🔍
Đối chiếu giá trị tham chiếu
Xác minh nhanh giá trị băm SHA-256 từ trang tải xuống, SBOM manifest hoặc nhật ký kiểm toán mà không cần mở terminal hoặc viết code dùng một lần.

Các trường hợp sử dụng SHA-256

Lập trình viên Frontend — Subresource Integrity
Tính giá trị băm SHA-256 của script hoặc stylesheet được lưu trên CDN để điền vào thuộc tính integrity trong thẻ script và link, bảo vệ chống lại các cuộc tấn công chuỗi cung ứng.
Kỹ sư Backend — Ký yêu cầu API
Nhiều API (AWS Signature V4, Stripe webhooks) yêu cầu giá trị băm SHA-256 của payload yêu cầu. Dùng công cụ này để tính giá trị băm tham chiếu trong quá trình phát triển và gỡ lỗi.
DevOps — Xác minh artefact
Xác minh checksum SHA-256 của các tệp nhị phân đã tải xuống, Docker base image hoặc Terraform provider plugin trước khi triển khai lên môi trường production.
Kỹ sư QA — Kiểm tra vector thử nghiệm
Đối chiếu đầu ra SHA-256 với các vector thử nghiệm của NIST (ví dụ FIPS 180-4) để xác nhận rằng việc triển khai hàm băm của bạn xử lý đúng các trường hợp biên.
Kỹ sư dữ liệu — Lấy dấu vân tay theo hàng
Băm khóa tổng hợp hoặc các trường PII bằng SHA-256 để tạo dấu vân tay xác định, không thể đảo ngược phục vụ loại bỏ trùng lặp hoặc giả danh hóa trong pipeline dữ liệu.
Sinh viên — Bài tập mật mã học
Thực nghiệm với SHA-256 để quan sát hiệu ứng tuyết lở: thay đổi một ký tự trong đầu vào và xem toàn bộ đầu ra 64 ký tự thay đổi hoàn toàn không thể đoán trước.

So sánh các biến thể họ SHA-2

SHA-256 thuộc họ SHA-2 được định nghĩa trong FIPS 180-4. Mỗi biến thể có sự đánh đổi giữa kích thước giá trị băm, đặc điểm hiệu suất và biên độ bảo mật. Bảng dưới đây so sánh tất cả các biến thể SHA-2 mà bạn có khả năng gặp.

Biến thểKích thước DigestĐộ dài HexKích thước BytePhù hợp nhất cho
SHA-256256 bits64 hex chars32 bytesTLS, blockchain, code signing, JWTs, SRI
SHA-224224 bits56 hex chars28 bytesTruncated SHA-256 — rare, specific compliance
SHA-384384 bits96 hex chars48 bytesGovernment / CNSS, higher collision margin
SHA-512512 bits128 hex chars64 bytesDigital signatures, HMAC with large keys
SHA-512/256256 bits64 hex chars32 bytesSHA-512 speed on 64-bit CPUs, 256-bit output

SHA-256 so với SHA-1, MD5 và SHA-3

Lựa chọn thuật toán băm phù hợp phụ thuộc vào yêu cầu bảo mật và ràng buộc tương thích của bạn. SHA-256 chiếm vị trí thực tế tối ưu: an toàn, được hỗ trợ rộng rãi (bao gồm Web Crypto API) và đủ nhanh cho hầu hết khối lượng công việc. Bảng so sánh dưới đây bao gồm các thuộc tính quan trọng nhất khi chọn hàm băm.

Thuộc tínhSHA-256SHA-1MD5SHA-3-256
Digest size256 bits (64 hex)160 bits (40 hex)128 bits (32 hex)256 bits (64 hex)
Security statusSecureBroken (2017)Broken (2004)Secure
Collision resistance2^128 operationsPractical attackPractical attack2^128 operations
Block size512 bits512 bits512 bits1600 bits (sponge)
Rounds64806424
StandardFIPS 180-4FIPS 180-4RFC 1321FIPS 202
Web Crypto APIYesYesNoNo
Primary use todayTLS, blockchain, SRILegacy git onlyNon-security checksumsBackup standard

SHA-256 hoạt động bên trong như thế nào?

SHA-256 xử lý đầu vào theo các khối 512-bit (64 byte) thông qua cấu trúc Merkle–Damgård. Thuật toán khởi tạo tám từ trạng thái 32-bit (H0–H7) được lấy từ phần thập phân của căn bậc hai của tám số nguyên tố đầu tiên. Mỗi khối đi qua 64 vòng trộn sử dụng các phép toán bitwise (AND, XOR, NOT, dịch phải vòng, dịch phải) và 64 hằng số vòng lấy từ phần thập phân của căn bậc ba của 64 số nguyên tố đầu tiên.

Input: "hello world"
SHA-256: b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
(256 bits = 32 bytes = 64 hex characters)
BướcMô tả
PaddingAppend a 1-bit, then zeros until the message length is 448 mod 512. Append the original message length as a 64-bit big-endian integer.
Block splittingDivide the padded message into 512-bit (64-byte) blocks.
Message scheduleExpand each 16-word (32-bit) block into 64 words using sigma functions with right-rotate and right-shift operations.
CompressionProcess 64 rounds per block using Ch, Maj, and two Sigma functions with 64 round constants derived from cube roots of the first 64 primes.
OutputConcatenate the eight 32-bit state words (H0-H7) into a 256-bit (32-byte) digest, rendered as 64 hexadecimal characters.

Hiệu ứng tuyết lở đảm bảo rằng việc đảo một bit trong đầu vào sẽ thay đổi khoảng 50% các bit đầu ra. Thuộc tính này, kết hợp với khả năng kháng va chạm 2^128, là lý do SHA-256 vẫn là khuyến nghị cơ sở cho các ứng dụng nhạy cảm về bảo mật trong năm 2026.

Ví dụ code SHA-256

SHA-256 có sẵn nguyên bản trong mọi ngôn ngữ và môi trường thực thi chính. Web Crypto API cung cấp nó trong trình duyệt mà không cần thư viện nào. Các ví dụ dưới đây minh họa các mẫu sử dụng thực tế bao gồm xử lý đầu vào Unicode và băm tệp.

JavaScript (Web Crypto API)
// Works in all modern browsers and Node.js 18+
async function sha256(text) {
  const data = new TextEncoder().encode(text)
  const hashBuffer = await crypto.subtle.digest('SHA-256', data)
  const hashArray = Array.from(new Uint8Array(hashBuffer))
  return hashArray.map(b => b.toString(16).padStart(2, '0')).join('')
}

await sha256('hello world')
// → "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"

// Node.js (built-in crypto module)
const crypto = require('crypto')
crypto.createHash('sha256').update('hello world').digest('hex')
// → "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"
Python
import hashlib

# Basic SHA-256 hash
result = hashlib.sha256(b'hello world').hexdigest()
print(result)  # → "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"

# Hash a string (encode to bytes first)
text = 'café ☕'
hashlib.sha256(text.encode('utf-8')).hexdigest()
# → "3eb53e00aa1bb4b1e8aab1ab38e56e6b8fb0b20e1cf7e1d19f36e4fad2537445"

# Hash a file in chunks (memory-efficient)
with open('release.tar.gz', 'rb') as f:
    sha = hashlib.sha256()
    for chunk in iter(lambda: f.read(8192), b''):
        sha.update(chunk)
    print(sha.hexdigest())
Go
package main

import (
    "crypto/sha256"
    "fmt"
)

func main() {
    data := []byte("hello world")
    hash := sha256.Sum256(data)
    fmt.Printf("%x\n", hash)
    // → b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
}
CLI (Linux / macOS)
# Using sha256sum (Linux) or shasum (macOS)
echo -n "hello world" | sha256sum
# → b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9  -

# macOS
echo -n "hello world" | shasum -a 256
# → b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9  -

# Verify a file checksum
echo "b94d27b...  myfile.bin" | sha256sum -c
# → myfile.bin: OK

# Using openssl (cross-platform)
echo -n "hello world" | openssl dgst -sha256
# → SHA2-256(stdin)= b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

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

SHA-256 có còn an toàn không?
Có. Tính đến năm 2026, chưa có cuộc tấn công va chạm, tiền ảnh hay tiền ảnh thứ hai thực tế nào được tìm thấy đối với SHA-256 đầy đủ. NIST, CA/Browser Forum và IETF tiếp tục khuyến nghị SHA-256 cho chứng chỉ TLS, ký mã và chữ ký số. Khả năng kháng va chạm lý thuyết là 2^128 phép tính, vượt xa giới hạn tính toán hiện tại.
Sự khác biệt giữa SHA-256 và SHA-2 là gì?
SHA-2 là tên họ cho sáu hàm băm: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 và SHA-512/256. SHA-256 là thành viên được sử dụng phổ biến nhất. Khi tài liệu nói "dùng SHA-2", hầu như luôn có nghĩa là SHA-256 cụ thể, trừ khi cần giá trị băm dài hơn.
SHA-256 có thể bị đảo ngược hoặc giải mã không?
Không. SHA-256 là hàm băm một chiều, không phải mã hóa. Không có khóa và không có quá trình giải mã. Cách duy nhất để tìm đầu vào gốc là tấn công brute-force hoặc từ điển, điều này không khả thi về mặt tính toán với các đầu vào đủ phức tạp. Với các đầu vào ngắn hoặc dễ đoán (như mật khẩu phổ biến), các bảng rainbow được tính trước sẵn có, đó là lý do tại sao băm mật khẩu luôn phải dùng salt và KDF chuyên dụng như bcrypt hoặc Argon2.
SHA-256 so sánh với SHA-3 như thế nào?
SHA-3 (Keccak, FIPS 202) sử dụng cấu trúc bên trong hoàn toàn khác (cấu trúc sponge) so với SHA-256 (Merkle–Damgård). Cả SHA-256 và SHA-3-256 đều tạo ra giá trị băm 256-bit và cung cấp khả năng kháng va chạm tương đương. SHA-3 được thiết kế như phương án dự phòng trong trường hợp SHA-2 bị phá vỡ, nhưng SHA-2 vẫn chưa bị phá vỡ. SHA-256 có khả năng hỗ trợ môi trường thực thi rộng hơn — đáng chú ý là Web Crypto API hỗ trợ SHA-256 nhưng không hỗ trợ SHA-3.
SHA-256 có phù hợp để băm mật khẩu không?
Không phải trực tiếp. Giá trị băm SHA-256 thô của mật khẩu dễ bị tấn công brute-force và bảng rainbow vì SHA-256 được thiết kế để nhanh. Để lưu trữ mật khẩu, hãy dùng hàm dẫn xuất khóa chuyên dụng như bcrypt, scrypt hoặc Argon2id, những hàm này thêm salt và hệ số công việc có thể cấu hình để làm chậm các cuộc tấn công.
Tại sao Bitcoin dùng SHA-256 kép?
Bitcoin tính SHA-256(SHA-256(data)) (được gọi là hash256) cho tiêu đề khối và ID giao dịch. Việc áp dụng hai lần bảo vệ chống lại các cuộc tấn công mở rộng độ dài, nơi kẻ tấn công thêm dữ liệu vào thông điệp và tính giá trị băm hợp lệ mà không cần biết đầu vào gốc. Đây là thuộc tính của các hàm băm Merkle–Damgård mà SHA-256 một lần không ngăn chặn được.
Subresource Integrity (SRI) là gì và SHA-256 liên quan như thế nào?
SRI là đặc tả W3C cho phép trình duyệt xác minh rằng tài nguyên được tải về (script, stylesheet) chưa bị giả mạo. Bạn thêm thuộc tính integrity chứa giá trị băm SHA-256 (hoặc SHA-384/SHA-512) mã hóa Base64 của nội dung tệp dự kiến. Trình duyệt tính giá trị băm của tệp đã tải xuống và từ chối thực thi nếu các giá trị băm không khớp. SHA-256 là thuật toán tối thiểu được SRI hỗ trợ.