SHA-256 Hash Generator
Generera SHA-256-hashvärde från vilken text som helst
Inmatningstext
SHA-256-hash
SHA-256-hashvärdet visas här…
Vad är SHA-256-hashning?
SHA-256 (Secure Hash Algorithm 256-bit) är en kryptografisk hashfunktion ur SHA-2-familjen, publicerad av NIST 2001 som en del av FIPS 180-2 (uppdaterad i FIPS 180-4). Oavsett indata — ett enstaka tecken, en fil på flera gigabyte eller en tom sträng — producerar SHA-256 ett fast 256-bitars (32-byte) sammandrag, som konventionellt visas som 64 hexadecimala tecken. SHA-256 är den mest utbredd hashfunktionen i produktionssystem idag och utgör grunden för TLS-certifikatkedjor, Bitcoins proof-of-work, Subresource Integrity (SRI) och kodsignerings-arbetsflöden.
SHA-256 är en envägsfunktion: att beräkna ett hashvärde från indata är snabbt (hundratals megabyte per sekund på modern hårdvara), men att reversera processen — att hitta indata som producerar ett givet hashvärde — är beräkningsmässigt ogörbart. Denna egenskap, kallad förebildsresistens, gör SHA-256 lämplig för lösenordshashning (i kombination med ett salt och nyckelsträckning), digitala signaturer och verifiering av dataintegritet. Till skillnad från MD5 och SHA-1 har ingen kollisions- eller förebildsattack påvisats mot fullständig SHA-256.
SHA-2-familjen omfattar sex varianter: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 och SHA-512/256. SHA-256 arbetar med 32-bitars ord och 64 rundor per block, optimerat för 32-bitarsprocessorer. SHA-512 använder 64-bitars ord och 80 rundor, vilket kan vara snabbare på 64-bitarsplattformar. För de flesta tillämpningar där ett 256-bitars sammandrag är tillräckligt är SHA-256 den standardrekommendation som ges av NIST, IETF och CA/Browser Forum.
Varför använda en SHA-256-generator online?
Att generera ett SHA-256-hashvärde kräver normalt ett terminalkommando eller några rader kod. Det här webbläsarbaserade verktyget låter dig beräkna SHA-256-sammandrag utan att installera något, byta kontext eller skriva ett skript.
Användningsfall för SHA-256
Jämförelse av SHA-2-familjens varianter
SHA-256 tillhör SHA-2-familjen som definieras i FIPS 180-4. Varje variant avväger sammandragens storlek, prestandaegenskaper och säkerhetsmarginal. Tabellen nedan jämför alla SHA-2-varianter du sannolikt kommer att stöta på.
| Version | Sammandragens storlek | Hex-längd | Bytestorlek | Bäst för |
|---|---|---|---|---|
| SHA-256 | 256 bits | 64 hex chars | 32 bytes | TLS, blockchain, code signing, JWTs, SRI |
| SHA-224 | 224 bits | 56 hex chars | 28 bytes | Truncated SHA-256 — rare, specific compliance |
| SHA-384 | 384 bits | 96 hex chars | 48 bytes | Government / CNSS, higher collision margin |
| SHA-512 | 512 bits | 128 hex chars | 64 bytes | Digital signatures, HMAC with large keys |
| SHA-512/256 | 256 bits | 64 hex chars | 32 bytes | SHA-512 speed on 64-bit CPUs, 256-bit output |
SHA-256 vs. SHA-1 vs. MD5 vs. SHA-3
Valet av rätt hashalgoritm beror på dina säkerhetskrav och kompatibilitetsbegränsningar. SHA-256 intar den praktiska mittenpositionen: den är säker, universellt stödd (inklusive Web Crypto API) och tillräckligt snabb för de flesta arbetsbelastningar. Jämförelsetabellen nedan täcker de egenskaper som är viktigast när du väljer en hashfunktion.
| Egenskap | SHA-256 | SHA-1 | MD5 | SHA-3-256 |
|---|---|---|---|---|
| Digest size | 256 bits (64 hex) | 160 bits (40 hex) | 128 bits (32 hex) | 256 bits (64 hex) |
| Security status | Secure | Broken (2017) | Broken (2004) | Secure |
| Collision resistance | 2^128 operations | Practical attack | Practical attack | 2^128 operations |
| Block size | 512 bits | 512 bits | 512 bits | 1600 bits (sponge) |
| Rounds | 64 | 80 | 64 | 24 |
| Standard | FIPS 180-4 | FIPS 180-4 | RFC 1321 | FIPS 202 |
| Web Crypto API | Yes | Yes | No | No |
| Primary use today | TLS, blockchain, SRI | Legacy git only | Non-security checksums | Backup standard |
Hur SHA-256 fungerar internt
SHA-256 bearbetar indata i 512-bitars (64-byte) block via en Merkle–Damgård-konstruktion. Algoritmen initialiserar åtta 32-bitars tillståndsord (H0–H7) härledda från bråkdelarna av kvadratrötterna av de första åtta primtalen. Varje block passerar 64 blandningsrundor som använder bitvisa operationer (AND, XOR, NOT, högerrotera, högerskifta) och 64 rundkonstanter härledda från kubrötterna av de första 64 primtalen.
SHA-256: b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
(256 bits = 32 bytes = 64 hex characters)
| Steg | Beskrivning |
|---|---|
| Padding | Append 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 splitting | Divide the padded message into 512-bit (64-byte) blocks. |
| Message schedule | Expand each 16-word (32-bit) block into 64 words using sigma functions with right-rotate and right-shift operations. |
| Compression | Process 64 rounds per block using Ch, Maj, and two Sigma functions with 64 round constants derived from cube roots of the first 64 primes. |
| Output | Concatenate the eight 32-bit state words (H0-H7) into a 256-bit (32-byte) digest, rendered as 64 hexadecimal characters. |
Lavineffekten säkerställer att ett enskilt bitflipp i indata förändrar ungefär 50 % av utdatabitarna. Denna egenskap, kombinerad med 2^128 kollisionsresistens, är anledningen till att SHA-256 förblir baslinerekommendationen för säkerhetskänsliga tillämpningar år 2026.
SHA-256 kodexempel
SHA-256 finns inbyggt i alla större språk och körtidsmiljöer. Web Crypto API tillhandahåller det i webbläsare utan något bibliotek. Exemplen nedan visar verkliga användningsmönster inklusive hantering av Unicode-indata och filhashning.
// 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"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())package main
import (
"crypto/sha256"
"fmt"
)
func main() {
data := []byte("hello world")
hash := sha256.Sum256(data)
fmt.Printf("%x\n", hash)
// → b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
}# 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