SHA-256 Cheat Sheet
SHA-256 (Secure Hash Algorithm 256-bit) ist ein kryptografischer Hash-Algorithmus aus der SHA-2 Familie, entwickelt vom National Institute of Standards and Technology (NIST). Er erzeugt aus beliebiger Eingabe einen einzigartigen 256-Bit-Hash (64 Hex-Zeichen).
SHA-256 bietet eine astronomische Anzahl möglicher Hash-Werte: genau 2²⁵⁶ (das sind 115792089237316195423570985008687907853269984665640564039457584007913129639936 oder rund 1,16×10⁷⁷ mögliche Kombinationen). Zum Vergleich: Man schätzt die Gesamtzahl aller Atome im beobachtbaren Universum auf etwa 10⁸⁰ – SHA-256 kommt also in die Nähe dieser Größenordnung. Diese enorme Komplexität macht es praktisch unmöglich, dass zwei verschiedene Eingaben denselben Hash ergeben (eine sogenannte Kollision). Genau deshalb ist SHA-256 ideal für:
- Kryptowährungen (z. B. Bitcoin, für Mining und Adressen)
- Dateiintegritätsprüfungen
- Digitale Signaturen & Zertifikate
- API-Authentifizierung (z. B. HMAC-SHA256)
SHA-256 Beispiele in allen wichtigen Umgebungen
Hinweis: Die Eingabe „abc“ ohne Zeilenumbruch (\n) ergibt immer:
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
Linux / macOS
Hash eines Strings:
echo -n "abc" | sha256sum
Hash einer Datei:
sha256sum test.txt
Windows 10/11 PowerShell
Hash einer Datei:
(Get-FileHash -Algorithm SHA256 -Path "test.txt").Hash.ToLower()
Hash eines Strings:
$text = "abc"
$bytes = [System.Text.Encoding]::UTF8.GetBytes($text)
$hash = [System.Security.Cryptography.SHA256]::Create().ComputeHash($bytes)
[BitConverter]::ToString($hash) -replace "-", "" | ForEach-Object { $_.ToLower() }
Perl (Digest::SHA)
String hashen:
perl -MDigest::SHA=sha256_hex -e 'print sha256_hex("abc"), "\n"'
Datei hashen:
perl -MDigest::SHA=sha256_hex -e 'open F,"test.txt"; binmode(F); print sha256_hex(do{local $/;<F>}),"\n"'
Python 3
String:
python3 -c "import hashlib; print(hashlib.sha256(b'abc').hexdigest())"
Datei:
python3 -c "import hashlib; print(hashlib.sha256(open('test.txt','rb').read()).hexdigest())"
PHP
String:
php -r 'echo hash("sha256", "abc"), PHP_EOL;'
Datei:
php -r 'echo hash("sha256", file_get_contents("test.txt")), PHP_EOL;'
Ruby
String:
ruby -rdigest -e 'puts Digest::SHA256.hexdigest("abc")'
Datei:
ruby -rdigest -e 'puts Digest::SHA256.file("test.txt").hexdigest'
Rust
String und Datei hashen:
Cargo.toml:
[package]
name = "sha256-rs"
version = "0.1.0"
edition = "2024"
[dependencies]
sha2 = "0.10"
main.rs:
use std::env;
use std::fs;
use sha2::{Sha256, Digest};
fn main() {
// String hashen
let mut hasher = Sha256::new();
hasher.update(b"abc");
println!("SHA256(\"abc\") = {:x}", hasher.finalize());
// Datei hashen
let args: Vec<String> = env::args().collect();
if args.len() != 2 {
eprintln!("Usage: {} <file>", args[0]);
std::process::exit(1);
}
let filename = &args[1];
let data = fs::read(filename).expect("Datei konnte nicht gelesen werden");
let mut file_hasher = Sha256::new();
file_hasher.update(data);
println!("SHA256('{}') = {:x}", filename, file_hasher.finalize());
}