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());
}