PageSourceSearch

https://www.hashgenerator.de/assets/js/c0aedc41.574f386a.js

js hashgenerator.de collected 2026-10-09 01:16:32 UTC 47,717 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkhashgenerator_de=self.webpackChunkhashgenerator_de||[]).push([["3959"],{422(e,n,i){i.r(n),i.d(n,{metadata:()=>s,default:()=>x,frontMatter:()=>h,contentTitle:()=>c,toc:()=>u,assets:()=>o});var s=JSON.parse('{"id":"algorithmen/sha-2/was-ist-sha-512","title":"Was ist SHA-512?","description":"Was ist SHA-512? Erfahre, wie die kryptografische Hashfunktion aus der SHA-2-Familie mit 1024-Bit-Bl\xf6cken, 64-Bit-W\xf6rtern und 80 Kompressionsrunden aufgebaut ist und wie sicher sie ist.","source":"@site/docs/algorithmen/sha-2/was-ist-sha-512.md","sourceDirName":"algorithmen/sha-2","slug":"/algorithmen/sha-2/was-ist-sha-512","permalink":"/docs/algorithmen/sha-2/was-ist-sha-512","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":7,"frontMatter":{"title":"Was ist SHA-512?","description":"Was ist SHA-512? Erfahre, wie die kryptografische Hashfunktion aus der SHA-2-Familie mit 1024-Bit-Bl\xf6cken, 64-Bit-W\xf6rtern und 80 Kompressionsrunden aufgebaut ist und wie sicher sie ist.","sidebar_position":7,"published":"2026-09-26T00:00:00.000Z"},"sidebar":"tutorialSidebar","previous":{"title":"Was ist SHA-384?","permalink":"/docs/algorithmen/sha-2/was-ist-sha-384"},"next":{"title":"SHA-256 vs. SHA-512 \u2013 was ist der Unterschied?","permalink":"/docs/algorithmen/sha-2/sha-256-vs-sha-512"}}'),r=i(4848),t=i(8453),a=i(4711),l=i(4206),d=i(4476);let h={title:"Was ist SHA-512?",description:"Was ist SHA-512? Erfahre, wie die kryptografische Hashfunktion aus der SHA-2-Familie mit 1024-Bit-Bl\xf6cken, 64-Bit-W\xf6rtern und 80 Kompressionsrunden aufgebaut ist und wie sicher sie ist.",sidebar_position:7,published:new Date("2026-09-26T00:00:00.000Z")},c="Was ist SHA-512?",o={},u=[{value:"Wie sieht ein SHA-512-Hash aus?",id:"wie-sieht-ein-sha-512-hash-aus",level:2},{value:"Probier SHA-512 selbst aus",id:"probier-sha-512-selbst-aus",level:2},{value:"Wie funktioniert SHA-512 grunds\xe4tzlich?",id:"wie-funktioniert-sha-512-grunds\xe4tzlich",level:2},{value:"SHA-512 arbeitet mit 1024-Bit-Bl\xf6cken",id:"sha-512-arbeitet-mit-1024-bit-bl\xf6cken",level:2},{value:"Das Padding bei SHA-512",id:"das-padding-bei-sha-512",level:2},{value:"Aus 1024 Bit werden 16 W\xf6rter",id:"aus-1024-bit-werden-16-w\xf6rter",level:2},{value:"Von 16 auf 80 W\xf6rter",id:"von-16-auf-80-w\xf6rter",level:2},{value:"Der interne Zustand",id:"der-interne-zustand",level:2},{value:"Warum sehen die Initialwerte vertraut aus?",id:"warum-sehen-die-initialwerte-vertraut-aus",level:2},{value:"80 Kompressionsrunden",id:"80-kompressionsrunden",level:2},{value:"Was passiert in einer Runde?",id:"was-passiert-in-einer-runde",level:2},{value:"Die 64-Bit-Architektur",id:"die-64-bit-architektur",level:2},{value:"Woher kommen die Rundenkonstanten?",id:"woher-kommen-die-rundenkonstanten",level:2},{value:"Der Feed-forward-Schritt",id:"der-feed-forward-schritt",level:2},{value:"Wie entsteht daraus der 512-Bit-Hash?",id:"wie-entsteht-daraus-der-512-bit-hash",level:2},{value:"Wie sicher ist SHA-512?",id:"wie-sicher-ist-sha-512",level:2},{value:"Kann man SHA-512 zur\xfcckrechnen?",id:"kann-man-sha-512-zur\xfcckrechnen",level:2},{value:"Ist SHA-512 sicherer als SHA-256?",id:"ist-sha-512-sicherer-als-sha-256",level:2},{value:"Ist SHA-512 langsamer als SHA-256?",id:"ist-sha-512-langsamer-als-sha-256",level:2},{value:"Sollte man SHA-512 f\xfcr Passw\xf6rter verwenden?",id:"sollte-man-sha-512-f\xfcr-passw\xf6rter-verwenden",level:2},{value:"SHA-512 ist nicht allein",id:"sha-512-ist-nicht-allein",level:2},{value:"Das Wichtigste in K\xfcrze",id:"das-wichtigste-in-k\xfcrze",level:2},{value:"Wie geht es weiter?",id:"wie-geht-es-weiter",level:2},{value:"Quellen und weiterf\xfchrende Standards",id:"quellen-und-weiterf\xfchrende-standards",level:2}];function g(e){let n={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.header,{children:(0,r.jsx)(n.h1,{id:"was-ist-sha-512",children:"Was ist SHA-512?"})}),"\n",(0,r.jsxs)(n.p,{children:["SHA-512 ist eine kryptografische Hashfunktion aus der ",(0,r.jsx)(n.a,{href:"/docs/algorithmen/sha-2/was-ist-sha-2",children:(0,r.jsx)(n.strong,{children:"SHA-2-Familie"})}),". Sie verarbeitet Daten beliebiger zul\xe4ssiger L\xe4nge und erzeugt darau
1s einen Hashwert mit einer festen L\xe4nge von ",(0,r.jsx)(n.strong,{children:"512 Bit"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"Das entspricht:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"512 Bit\n=\n64 Byte\n=\n128 Hex-Zeichen\n"})}),"\n",(0,r.jsx)(n.p,{children:"SHA-512 ist eng mit SHA-256 verwandt. Beide Algorithmen verwenden viele der gleichen Grundideen. Trotzdem ist SHA-512 nicht einfach eine Version von SHA-256 mit einem doppelt so langen Hashwert."}),"\n",(0,r.jsxs)(n.p,{children:["SHA-512 arbeitet intern mit ",(0,r.jsx)(n.strong,{children:"1024-Bit-Bl\xf6cken, 64-Bit-W\xf6rtern und 80 Kompressionsrunden"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["Wenn du die beiden Algorithmen direkt miteinander vergleichen m\xf6chtest, erkl\xe4re ich die Unterschiede ausf\xfchrlich in ",(0,r.jsx)(n.a,{href:"/docs/algorithmen/sha-2/sha-256-vs-sha-512",children:"SHA-256 vs. SHA-512 \u2013 was ist der Unterschied?"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"In diesem Artikel schauen wir uns SHA-512 selbst genauer an."}),"\n",(0,r.jsx)(n.h2,{id:"wie-sieht-ein-sha-512-hash-aus",children:"Wie sieht ein SHA-512-Hash aus?"}),"\n",(0,r.jsx)(n.p,{children:"Unabh\xe4ngig davon, wie gro\xdf die Eingabe ist, erzeugt SHA-512 immer einen Hashwert mit 512 Bit."}),"\n",(0,r.jsx)(n.p,{children:"Das k\xf6nnen wenige Zeichen sein:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"Hallo\n"})}),"\n",(0,r.jsx)(n.p,{children:"ein l\xe4ngerer Text oder eine gro\xdfe Datei."}),"\n",(0,r.jsx)(n.p,{children:"Das Ergebnis besitzt immer:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"512 Bit\n=\n64 Byte\n=\n128 Hex-Zeichen\n"})}),"\n",(0,r.jsx)(n.p,{children:"Die 128 Hex-Zeichen ergeben sich daraus, dass ein Hex-Zeichen vier Bit repr\xe4sentiert:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"512 / 4 = 128\n"})}),"\n",(0,r.jsx)(n.p,{children:"Die L\xe4nge des Hashwerts h\xe4ngt also nicht von der L\xe4nge der Eingabe ab."}),"\n",(0,r.jsx)(n.h2,{id:"probier-sha-512-selbst-aus",children:"Probier SHA-512 selbst aus"}),"\n",(0,r.jsx)(n.p,{children:"Am einfachsten l\xe4sst sich diese Eigenschaft mit einer eigenen Eingabe beobachten."}),"\n",(0,r.jsx)(n.p,{children:"Gib deinen Namen, einen Satz oder einen beliebigen anderen Text ein und berechne den SHA-512-Hash."}),"\n",(0,r.jsx)(a.A,{fixedAlgorithm:"sha512"}),"\n",(0,r.jsx)(n.p,{children:"\xc4ndere anschlie\xdfend nur ein einziges Zeichen."}),"\n",(0,r.jsx)(n.p,{children:"Du wirst feststellen, dass sich nicht nur eine kleine Stelle des Hashwerts ver\xe4ndert. Stattdessen sieht der neue Hash vollst\xe4ndig anders aus."}),"\n",(0,r.jsxs)(n.p,{children:["Dieses Verhalten h\xe4ngt mit dem ",(0,r.jsx)(n.a,{href:"pathname:///docs/hashes-verstehen/was-ist-der-avalanche-effect",children:"Avalanche Effect"})," zusammen, den ich in einem eigenen Artikel ausf\xfchrlicher erkl\xe4re."]}),"\n",(0,r.jsx)(n.h2,{id:"wie-funktioniert-sha-512-grunds\xe4tzlich",children:"Wie funktioniert SHA-512 grunds\xe4tzlich?"}),"\n",(0,r.jsx)(n.p,{children:"Der Ablauf l\xe4sst sich zun\xe4chst stark vereinfacht darstellen:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"Eingabe\n   \u2193\nBytes\n   \u2193\nPadding\n   \u2193\n1024-Bit-Bl\xf6cke\n   \u2193\n16 \xd7 64-Bit-W\xf6rter\n   \u2193\n80-Wort-Message-Schedule\n   \u2193\n80 Kompressionsrunden\n   \u2193\nFeed-forward\n   \u2193\n512-Bit-Hash\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Wenn du bereits ",(0,r.jsx)(n.a,{href:"/docs/algorithmen/sha-2/wie-funktioniert-sha-256",children:"Wie funktioniert SHA-256?"})," oder ",(0,r.jsx)(n.a,{href:"/docs/algorithmen/sha-2/sha-256-schritt-fuer-schritt",children:"SHA-256 Schritt f\xfcr Schritt"})," gelesen hast, kommt dir dieser Aufbau wahrscheinlich bekannt vor."]}),"\n",(0,r.jsx)(n.p,{children:"Das ist kein Zufall."}),"\n",(0,r.jsx)(n.p,{children:"SHA-256 und SHA-512 geh\xf6ren beide zur SHA-2-Familie und verwenden verwandte Konstruktionsprinzipien."}),"\n",(0,r.jsx)(n.p,{children:"Die Gr\xf6\xdfen, mit denen sie arbeiten, unterscheiden sich jedoch deutlich."}),"\n",(0,r.jsx)(l.A,{position:"hashArticle1"}),"\n",(0,r.jsx)(n.h2,{id:"sha-512-arbeitet-mit-1024-bit-bl\xf6cken",children:"SHA-512 arbeitet mit 1024-Bit-Bl\xf6cken"}),"\n",(0,r.jsxs)(n.p,{children:["Bevor SHA-512 mit der eigentlichen ",(0,r.jsx)(n.a,{href:"/glossar#kompressionsfunktion",children:"Kompressionsfunktion"})," beginnt, wird die Nachricht vorbereitet und in Bl\xf6cke aufgeteilt."]}),"\n",(0,r.jsx)(n.p,{children:"Ein SHA-512-Block besitzt:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"1024 Bit\n=\n128 Byte\n"})}),"\n",(0,r.jsx)(n.p,{children:"Zum Vergleich:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"SHA-256 \u2192  512-Bit-Bl\xf6cke\nSHA-512 \u2192 1024-Bit-Bl\xf6cke\n"})}),"\n",(0,r.jsx)(n.p,{children:"SHA-512 verarbeitet pro Block also doppelt so viele Bits wie SHA-256."}),"\n",(0,r.jsx)(n.p,{children:"Das bedeutet allerdings nicht, dass SHA-512 automatisch doppelt so schnell oder doppelt so langsam ist. Die tats\xe4chliche Performance h\xe4ngt unter anderem von Prozessorarchitektur und Implementierung ab."}),"\n",(0,r.jsx)(n.h2,{id:"das-padding-bei-sha-512",children:"Das Padding bei SHA-512"}),"\n",(0,r.jsx)(n.p,{children:"Damit eine Nachricht in die ben\xf6tigten Bl\xf6cke passt, wird sie vor der eigentlichen Verarbeitung erweitert."}),"\n",(0,r.jsx)(n.p,{children:"Das Grundprinzip sieht so aus:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"[ Nachricht ][ 1 ][ Nullen ][ Nachrichtenl\xe4nge ]\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Zun\xe4chst wird ein ",(0,r.jsx)(n.code,{children:"1"}),"-Bit angeh\xe4ngt."]}),"\n",(0,r.jsxs)(n.p,{children:["Danach folgen so viele ",(0,r.jsx)(n.code,{children:"0"}),"-Bits, dass am Ende noch Platz f\xfcr die kodierte urspr\xfcngliche Nachrichtenl\xe4nge bleibt."]}),"\n",(0,r.jsx)(n.p,{children:"Bei SHA-512 ist dieses L\xe4ngenfeld:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"128 Bit\n"})}),"\n",(0,r.jsx)(n.p,{children:"lang."}),"\n",(0,r.jsx)(n.p,{children:"Das unterscheidet SHA-512 ebenfalls von SHA-256:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"SHA-256 \u2192  64-Bit-L\xe4ngenfeld\nSHA-512 \u2192 128-Bit-L\xe4ngenfeld\n"})}),"\n",(0,r.jsxs)(n.p,{children:["FIPS 180-4 spezifiziert SHA-512 f\xfcr Nachrichten mit einer L\xe4nge von weniger als ",(0,r.jsx)(n.code,{children:"2\xb9\xb2\u2078"})," Bit."]}),"\n",(0,r.jsxs)(n.p,{children:["Nach dem ",(0,r.jsx)(n.a,{href:"/glossar#padding",children:"Padding"})," ist die Gesamtl\xe4nge der Nachricht ein Vielfaches von 1024 Bit."]}),"\n",(0,r.jsx)(n.h2,{id:"aus-1024-bit-werden-16-w\xf6rter",children:"Aus 1024 Bit werden 16 W\xf6rter"}),"\n",(0,r.jsx)(n.p,{children:"Ein 1024-Bit-Nachrichtenblock wird anschlie\xdfend in 16 W\xf6rter zerlegt:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"1024 / 16 = 64\n"})}),"\n",(0,r.jsx)(n.p,{children:"Jedes dieser W\xf6rter besitzt also:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"64 Bit\n"})}),"\n",(0,r.jsx)(n.p,{children:"Wir erhalten:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"W\u2080\nW\u2081\nW\u2082\n...\nW\u2081\u2085\n"})}),"\n",(0,r.jsx)(n.p,{children:"mit jeweils 64 Bit."}),"\n",(0,r.jsx)(n.p,{children:"Genau hier liegt einer der wichtigsten strukturellen Unterschiede zu SHA-256."}),"\n",(0,r.jsx)(n.p,{children:"SHA-256 arbeitet mit:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"16 \xd7 32-Bit-W\xf6rtern\n"})}),"\n",(0,r.jsx)(n.p,{children:"SHA-512 dagegen mit:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"16 \xd7 64-Bit-W\xf6rtern\n"})}),"\n",(0,r.jsx)(n.p,{children:"Dieser Unterschied zieht sich durch fast die gesamte weitere Berechnung."}),"\n",(0,r.jsx)(n.h2,{id:"von-16-auf-80-w\xf6rter",children:"Von 16 auf 80 W\xf6rter"}),"\n",(0,r.jsx)(n.p,{children:"Die urspr\xfcnglichen 16 W\xf6rter reichen noch nicht f\xfcr alle Kompressionsrunden aus."}),"\n",(0,r.jsxs)(n.p,{children:["Deshalb erzeugt SHA-512 daraus ein sogenanntes ",(0,r.jsx)(n.strong,{children:"Message Schedule"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"Aus:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"W\u2080 ... W\u2081\u2085\n"})}),"\n",(0,r.jsx)(n.p,{children:"werden:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"W\u2080 ... W\u2087\u2089\n"})}),"\n",(0,r.jsx)(n.p,{children:"Die ersten 16 W\xf6rter stammen direkt aus dem jeweiligen Nachrichtenblock."}),"\n",(0,r.jsx)(n.p,{children:"Die restlichen 64 W\xf6rter werden daraus berechnet."}),"\n",(0,r.jsxs)(n.p,{children:["Vereinfacht verwendet SHA-512 daf\xfcr ab ",(0,r.jsx)(n.code,{children:"W\u2081\u2086"}),":"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"W\u209C =\n\u03C3\u2081(W\u209C\u208B\u2082)\n+ W\u209C\u208B\u2087\n+ \u03C3\u2080(W\u209C\u208B\u2081\u2085)\n+ W\u209C\u208B\u2081\u2086\nmod 2\u2076\u2074\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Die Funktionen ",(0,r.jsx)(n.code,{children:"\u03C3\u2080"})," und ",(0,r.jsx)(n.code,{children:"\u03C3\u2081"}
1)," kombinieren Rotationen und Verschiebungen der 64-Bit-W\xf6rter."]}),"\n",(0,r.jsx)(n.p,{children:"Wichtig ist hier vor allem:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"SHA-256 \u2192 64 Schedule-W\xf6rter \xd7 32 Bit\n\nSHA-512 \u2192 80 Schedule-W\xf6rter \xd7 64 Bit\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Im ",(0,r.jsx)(n.a,{href:"/docs/algorithmen/sha-2/sha-256-vs-sha-512",children:"SHA-256-vs.-SHA-512-Vergleich"})," kannst du mit deiner eigenen Eingabe beobachten, wie unterschiedlich diese W\xf6rter bei beiden Algorithmen aussehen."]}),"\n",(0,r.jsx)(n.h2,{id:"der-interne-zustand",children:"Der interne Zustand"}),"\n",(0,r.jsx)(n.p,{children:"SHA-512 arbeitet mit acht internen 64-Bit-Werten."}),"\n",(0,r.jsx)(n.p,{children:"Sie werden h\xe4ufig als:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"a b c d e f g h\n"})}),"\n",(0,r.jsx)(n.p,{children:"bezeichnet."}),"\n",(0,r.jsxs)(n.p,{children:["Zu Beginn eines Hashvorgangs werden acht durch den Standard festgelegte ",(0,r.jsx)(n.a,{href:"/glossar#initial-hash-value",children:"Initialwerte"})," verwendet."]}),"\n",(0,r.jsx)(n.p,{children:"F\xfcr SHA-512 lauten sie:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"H\u2080 = 6a09e667f3bcc908\nH\u2081 = bb67ae8584caa73b\nH\u2082 = 3c6ef372fe94f82b\nH\u2083 = a54ff53a5f1d36f1\nH\u2084 = 510e527fade682d1\nH\u2085 = 9b05688c2b3e6c1f\nH\u2086 = 1f83d9abfb41bd6b\nH\u2087 = 5be0cd19137e2179\n"})}),"\n",(0,r.jsx)(n.p,{children:"Diese Werte h\xe4ngen nicht von deiner Eingabe ab."}),"\n",(0,r.jsx)(n.p,{children:"Sie sind Bestandteil der Definition von SHA-512."}),"\n",(0,r.jsx)(n.h2,{id:"warum-sehen-die-initialwerte-vertraut-aus",children:"Warum sehen die Initialwerte vertraut aus?"}),"\n",(0,r.jsx)(n.p,{children:"Wenn du dich zuvor intensiv mit SHA-256 besch\xe4ftigt hast, kommen dir die ersten Hex-Ziffern vielleicht bekannt vor."}),"\n",(0,r.jsx)(n.p,{children:"SHA-256 beginnt beispielsweise mit:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"6a09e667\nbb67ae85\n3c6ef372\na54ff53a\n...\n"})}),"\n",(0,r.jsx)(n.p,{children:"SHA-512 beginnt mit:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"6a09e667f3bcc908\nbb67ae8584caa73b\n3c6ef372fe94f82b\na54ff53a5f1d36f1\n...\n"})}),"\n",(0,r.jsx)(n.p,{children:"Das liegt an der Definition der Initialwerte innerhalb der SHA-2-Familie."}),"\n",(0,r.jsx)(n.p,{children:"FIPS 180-4 leitet die SHA-512-Initialwerte aus den ersten 64 Bit der Nachkommastellen der Quadratwurzeln der ersten acht Primzahlen ab."}),"\n",(0,r.jsx)(n.p,{children:"Bei SHA-256 werden entsprechend 32-Bit-Werte verwendet."}),"\n",(0,r.jsx)(n.p,{children:"Die \xc4hnlichkeit ist also kein Zufall."}),"\n",(0,r.jsx)(n.h2,{id:"80-kompressionsrunden",children:"80 Kompressionsrunden"}),"\n",(0,r.jsx)(n.p,{children:"Nachdem das Message Schedule erzeugt wurde, beginnt die eigentliche Kompressionsfunktion."}),"\n",(0,r.jsx)(n.p,{children:"SHA-512 f\xfchrt f\xfcr jeden 1024-Bit-Block:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"80 Runden\n"})}),"\n",(0,r.jsx)(n.p,{children:"aus."}),"\n",(0,r.jsx)(n.p,{children:"Zum Vergleich:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"SHA-256 \u2192 64 Runden\nSHA-512 \u2192 80 Runden\n"})}),"\n",(0,r.jsx)(n.p,{children:"In jeder Runde werden unter anderem verwendet:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"W\u209C\n"})}),"\n",(0,r.jsx)(n.p,{children:"das aktuelle Wort aus dem Message Schedule,"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"K\u209C\n"})}),"\n",(0,r.jsx)(n.p,{children:"eine f\xfcr die Runde festgelegte Konstante,"}),"\n",(0,r.jsx)(n.p,{children:"sowie die acht Arbeitsvariablen:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"a b c d e f g h\n"})}),"\n",(0,r.jsxs)(n.p,{children:["SHA-512 besitzt insgesamt 80 solcher 64-Bit-",(0,r.jsx)(n.a,{href:"/glossar#round-constant",children:"Rundenkonstanten"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"was-passiert-in-einer-runde",children:"Was passiert in einer Runde?"}),"\n",(0,r.jsx)(n.p,{children:"Die Struktur \xe4hnelt stark der von SHA-256."}),"\n",(0,r.jsx)(n.p,{children:"F\xfcr jede Runde werden zwei tempor\xe4re Werte berechnet:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"T\u2081 =\nh\n+ \u03A3\u2081(e)\n+ Ch(e,f,g)\n+ K\u209C\n+ W\u209C\nmod 2\u2076\u2074\n"})}),"\n",(0,r.jsx)(n.p,{children:"und:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"T\u2082 =\n\u03A3\u2080(a)\n+ Maj(a,b,c)\nmod 2\u2076\u2074\n"})}),"\n",(0,r.jsx)(n.p,{children:"Anschlie\xdfend werden die Arbeitsvariablen aktualisiert."}),"\n",(0,r.jsxs)(n.p,{children:["Die Funktionen ",(0,r.jsx)(n.code,{children:"Ch"})," und ",(0,r.jsx)(n.code,{children:"Maj"})," kennst du m\xf6glicherweise bereits aus SHA-256."]}),"\n",(0,r.jsx)(n.p,{children:"Auch SHA-512 verwendet diese logischen Funktionen."}),"\n",(0,r.jsx)(n.p,{children:"Die \u03A3- und \u03C3-Funktionen arbeiten jedoch mit Rotationen und Versc
1hiebungen, die f\xfcr die 64-Bit-Struktur von SHA-512 definiert sind."}),"\n",(0,r.jsx)(n.p,{children:"Genau deshalb w\xe4re es falsch, SHA-512 lediglich als SHA-256 mit mehr Runden zu betrachten."}),"\n",(0,r.jsx)(n.h2,{id:"die-64-bit-architektur",children:"Die 64-Bit-Architektur"}),"\n",(0,r.jsx)(n.p,{children:"Die Wortgr\xf6\xdfe ist eine der wichtigsten Eigenschaften von SHA-512."}),"\n",(0,r.jsx)(n.p,{children:"Fast \xfcberall begegnen uns:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"64 Bit\n"})}),"\n",(0,r.jsx)(n.p,{children:"Die Arbeitsvariablen besitzen 64 Bit."}),"\n",(0,r.jsx)(n.p,{children:"Die Schedule-W\xf6rter besitzen 64 Bit."}),"\n",(0,r.jsx)(n.p,{children:"Die Rundenkonstanten besitzen 64 Bit."}),"\n",(0,r.jsx)(n.p,{children:"Und die Additionen erfolgen:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"mod 2\u2076\u2074\n"})}),"\n",(0,r.jsx)(n.p,{children:"Das bedeutet: Nur die unteren 64 Bit eines Additionsergebnisses werden weiterverwendet."}),"\n",(0,r.jsx)(n.p,{children:"Diese Architektur unterscheidet SHA-512 grundlegend von der 32-Bit-Struktur von SHA-256."}),"\n",(0,r.jsx)(n.h2,{id:"woher-kommen-die-rundenkonstanten",children:"Woher kommen die Rundenkonstanten?"}),"\n",(0,r.jsx)(n.p,{children:"SHA-512 verwendet 80 Konstanten:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"K\u2080 ... K\u2087\u2089\n"})}),"\n",(0,r.jsx)(n.p,{children:"FIPS 180-4 definiert sie als die ersten 64 Bit der Nachkommastellen der Kubikwurzeln der ersten 80 Primzahlen."}),"\n",(0,r.jsx)(n.p,{children:"Die erste Konstante lautet beispielsweise:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"K\u2080 = 428a2f98d728ae22\n"})}),"\n",(0,r.jsx)(n.p,{children:"Diese Konstanten sind fest."}),"\n",(0,r.jsx)(n.p,{children:"Sie h\xe4ngen weder von der Nachricht noch vom erzeugten Hashwert ab."}),"\n",(0,r.jsx)(n.p,{children:"Das bedeutet:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"gleiche SHA-512-Implementierung\n\u2192\ngleiche Initialwerte\n\u2192\ngleiche Rundenkonstanten\n"})}),"\n",(0,r.jsx)(n.p,{children:"Die Eingabe beeinflusst dagegen das Message Schedule und damit die Werte, die durch die 80 Runden verarbeitet werden."}),"\n",(0,r.jsx)(n.h2,{id:"der-feed-forward-schritt",children:"Der Feed-forward-Schritt"}),"\n",(0,r.jsx)(n.p,{children:"Nach Runde 79 ist die Verarbeitung eines Blocks noch nicht ganz abgeschlossen."}),"\n",(0,r.jsx)(n.p,{children:"Die acht entstandenen Arbeitsvariablen werden zu den vorherigen Hashwerten addiert:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"H\u2080 = H\u2080 + a\nH\u2081 = H\u2081 + b\nH\u2082 = H\u2082 + c\nH\u2083 = H\u2083 + d\nH\u2084 = H\u2084 + e\nH\u2085 = H\u2085 + f\nH\u2086 = H\u2086 + g\nH\u2087 = H\u2087 + h\n"})}),"\n",(0,r.jsxs)(n.p,{children:["jeweils modulo ",(0,r.jsx)(n.code,{children:"2\u2076\u2074"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"Besteht die Nachricht aus weiteren 1024-Bit-Bl\xf6cken, dient dieser neue Zustand als Ausgangspunkt f\xfcr den n\xe4chsten Block."}),"\n",(0,r.jsx)(n.p,{children:"So wird Block f\xfcr Block die gesamte Nachricht verarbeitet."}),"\n",(0,r.jsx)(n.h2,{id:"wie-entsteht-daraus-der-512-bit-hash",children:"Wie entsteht daraus der 512-Bit-Hash?"}),"\n",(0,r.jsx)(n.p,{children:"Nachdem der letzte Nachrichtenblock verarbeitet wurde, bestehen weiterhin acht Hashwerte:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"H\u2080 H\u2081 H\u2082 H\u2083 H\u2084 H\u2085 H\u2086 H\u2087\n"})}),"\n",(0,r.jsx)(n.p,{children:"Jeder davon besitzt:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"64 Bit\n"})}),"\n",(0,r.jsx)(n.p,{children:"Sie werden hintereinandergef\xfcgt:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"H\u2080 || H\u2081 || H\u2082 || H\u2083 || H\u2084 || H\u2085 || H\u2086 || H\u2087\n"})}),"\n",(0,r.jsx)(n.p,{children:"Damit ergibt sich:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"8 \xd7 64 Bit\n=\n512 Bit\n"})}),"\n",(0,r.jsx)(n.p,{children:"Das ist der endg\xfcltige SHA-512-Hash."}),"\n",(0,r.jsx)(l.A,{position:"hashArticle2"}),"\n",(0,r.jsx)(n.h2,{id:"wie-sicher-ist-sha-512",children:"Wie sicher ist SHA-512?"}),"\n",(0,r.jsx)(n.p,{children:"Bei der Sicherheit einer Hashfunktion m\xfcssen verschiedene Eigenschaften getrennt betrachtet werden."}),"\n",(0,r.jsxs)(n.p,{children:["F\xfcr SHA-512 f\xfchrt NIST eine erwartete ",(0,r.jsx)(n.strong,{children:"Preimage-Resistance-St\xe4rke von 512 Bit"})," und eine ",(0,r.jsx)(n.strong,{children:"Collision-Resistance-St\xe4rke von 256 Bit"})," auf."]}),"\n",(0,r.jsx)(n.p,{children:"Warum unterscheiden sich diese Werte?"}),"\n",(0,r.jsx)(n.p,{children:"Bei einem generischen Preimage-Angriff ist die Gr\xf6\xdfenordnung f\xfcr einen idealen 512-Bit-Hash:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"2\u2075\xb9\xb2\n"})}
1),"\n",(0,r.jsx)(n.p,{children:"Bei der Suche nach beliebigen Kollisionen greift dagegen der Birthday-Effekt."}),"\n",(0,r.jsx)(n.p,{children:"Die Gr\xf6\xdfenordnung liegt deshalb bei:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"2\xb2\u2075\u2076\n"})}),"\n",(0,r.jsx)(n.p,{children:"Das ist immer noch eine astronomisch gro\xdfe Zahl."}),"\n",(0,r.jsxs)(n.p,{children:["Warum sich die Sicherheitsst\xe4rke bei Kollisionen ungef\xe4hr halbiert, erkl\xe4re ich ausf\xfchrlicher in ",(0,r.jsx)(n.a,{href:"pathname:///docs/sicherheit-verstehen/das-birthday-paradox",children:"Das Birthday Paradox"}),", ",(0,r.jsx)(n.a,{href:"pathname:///docs/sicherheit-verstehen/wie-funktioniert-ein-birthday-attack",children:"Wie funktioniert ein Birthday Attack?"})," und ",(0,r.jsx)(n.a,{href:"pathname:///docs/hashes-verstehen/was-ist-collision-resistance",children:"Was ist Collision Resistance?"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"kann-man-sha-512-zur\xfcckrechnen",children:"Kann man SHA-512 zur\xfcckrechnen?"}),"\n",(0,r.jsx)(n.p,{children:"SHA-512 besitzt keinen Entschl\xfcsselungsschritt."}),"\n",(0,r.jsx)(n.p,{children:"Aus:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"Daten\n\u2193\nSHA-512\n\u2193\nHash\n"})}),"\n",(0,r.jsx)(n.p,{children:"gibt es keine entsprechende Operation:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:'Hash\n\u2193\n"SHA-512 entschl\xfcsseln"\n\u2193\nurspr\xfcngliche Daten\n'})}),"\n",(0,r.jsx)(n.p,{children:"Das bedeutet allerdings nicht, dass eine urspr\xfcngliche Eingabe unter allen Umst\xe4nden geheim bleibt."}),"\n",(0,r.jsx)(n.p,{children:"Ist der m\xf6gliche Eingaberaum klein, kann ein Angreifer Kandidaten ausprobieren, hashen und mit dem bekannten Hashwert vergleichen."}),"\n",(0,r.jsx)(n.p,{children:"Genau deshalb ist die Aussage:"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsx)(n.p,{children:"\u201EHashes kann man nicht zur\xfcckrechnen.\u201C"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"allein etwas zu vereinfachend."}),"\n",(0,r.jsxs)(n.p,{children:["Was Preimage Resistance tats\xe4chlich bedeutet und welche Rolle der m\xf6gliche Eingaberaum spielt, erkl\xe4re ich in ",(0,r.jsx)(n.a,{href:"pathname:///docs/hashes-verstehen/was-ist-preimage-resistance",children:"Was ist Preimage Resistance?"})," und ",(0,r.jsx)(n.a,{href:"pathname:///docs/sicherheit-verstehen/kann-man-einen-hash-zurueckrechnen",children:"Kann man einen Hash zur\xfcckrechnen?"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"ist-sha-512-sicherer-als-sha-256",children:"Ist SHA-512 sicherer als SHA-256?"}),"\n",(0,r.jsx)(n.p,{children:"SHA-512 besitzt h\xf6here generische Sicherheitsst\xe4rken gegen Preimage- und Collision-Angriffe als SHA-256."}),"\n",(0,r.jsx)(n.p,{children:"Vereinfacht:"}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Eigenschaft"}),(0,r.jsx)(n.th,{style:{textAlign:"right"},children:"SHA-256"}),(0,r.jsx)(n.th,{style:{textAlign:"right"},children:"SHA-512"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Hashl\xe4nge"}),(0,r.jsx)(n.td,{style:{textAlign:"right"},children:"256 Bit"}),(0,r.jsx)(n.td,{style:{textAlign:"right"},children:"512 Bit"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Collision Resistance"}),(0,r.jsx)(n.td,{style:{textAlign:"right"},children:"128 Bit"}),(0,r.jsx)(n.td,{style:{textAlign:"right"},children:"256 Bit"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Preimage Resistance"}),(0,r.jsx)(n.td,{style:{textAlign:"right"},children:"256 Bit"}),(0,r.jsx)(n.td,{style:{textAlign:"right"},children:"512 Bit"})]})]})]}),"\n",(0,r.jsx)(n.p,{children:"Daraus folgt aber nicht:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"SHA-512 ist sicher\nSHA-256 ist unsicher\n"})}),"\n",(0,r.jsx)(n.p,{children:"SHA-256 bietet selbst bereits eine sehr hohe kryptografische Sicherheitsst\xe4rke und geh\xf6rt weiterhin zu den von NIST zugelasse
1nen SHA-2-Algorithmen."}),"\n",(0,r.jsx)(n.p,{children:"Welche Variante sinnvoll ist, h\xe4ngt vom konkreten Anwendungsfall ab."}),"\n",(0,r.jsxs)(n.p,{children:["Wenn du die beiden Algorithmen genauer vergleichen m\xf6chtest, findest du die technischen Unterschiede und einen interaktiven Vergleich in ",(0,r.jsx)(n.a,{href:"/docs/algorithmen/sha-2/sha-256-vs-sha-512",children:"SHA-256 vs. SHA-512 \u2013 was ist der Unterschied?"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"ist-sha-512-langsamer-als-sha-256",children:"Ist SHA-512 langsamer als SHA-256?"}),"\n",(0,r.jsx)(n.p,{children:"Aus der Hashl\xe4nge allein l\xe4sst sich das nicht ableiten."}),"\n",(0,r.jsx)(n.p,{children:"SHA-512 muss zwar:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"80\n"})}),"\n",(0,r.jsx)(n.p,{children:"statt:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"64\n"})}),"\n",(0,r.jsx)(n.p,{children:"Kompressionsrunden durchf\xfchren."}),"\n",(0,r.jsx)(n.p,{children:"Gleichzeitig verarbeitet SHA-512 aber 1024 Bit pro Block und verwendet 64-Bit-W\xf6rter."}),"\n",(0,r.jsx)(n.p,{children:"Auf Plattformen, die 64-Bit-Operationen effizient ausf\xfchren k\xf6nnen, kann diese Struktur Vorteile haben."}),"\n",(0,r.jsx)(n.p,{children:"Hinzu kommen Implementierungsdetails und m\xf6gliche Hardwarebeschleunigungen."}),"\n",(0,r.jsx)(n.p,{children:"Deshalb w\xe4re eine allgemeine Aussage wie:"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsx)(n.p,{children:"SHA-512 ist doppelt so lang und deshalb doppelt so langsam."}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"falsch."}),"\n",(0,r.jsx)(n.p,{children:"Wenn Performance f\xfcr eine konkrete Anwendung relevant ist, sollte sie mit der tats\xe4chlich eingesetzten Implementierung auf der Zielplattform gemessen werden."}),"\n",(0,r.jsx)(n.h2,{id:"sollte-man-sha-512-f\xfcr-passw\xf6rter-verwenden",children:"Sollte man SHA-512 f\xfcr Passw\xf6rter verwenden?"}),"\n",(0,r.jsx)(n.p,{children:"Nicht einfach direkt."}),"\n",(0,r.jsx)(n.p,{children:"SHA-512 ist eine allgemeine kryptografische Hashfunktion und darauf ausgelegt, Daten effizient zu verarbeiten."}),"\n",(0,r.jsx)(n.p,{children:"Genau diese Geschwindigkeit ist bei der Passwortspeicherung problematisch."}),"\n",(0,r.jsx)(n.p,{children:"Wenn ein Angreifer einen Passwort-Hash besitzt, m\xf6chte man verhindern, dass er extrem viele Passwortkandidaten pro Sekunde ausprobieren kann."}),"\n",(0,r.jsx)(n.p,{children:"F\xfcr die Speicherung von Passw\xf6rtern werden deshalb geeignete Passwort-Hashing-Verfahren verwendet, die unter anderem Salt und einen konfigurierbaren Kostenfaktor einsetzen."}),"\n",(0,r.jsx)(n.p,{children:"Ein l\xe4ngerer Hashwert macht SHA-512 also nicht automatisch zu einem geeigneten Passwort-Hashing-Verfahren."}),"\n",(0,r.jsx)(n.p,{children:"Dieses Thema behandle ich sp\xe4ter ausf\xfchrlich im Bereich Passwortsicherheit."}),"\n",(0,r.jsx)(n.h2,{id:"sha-512-ist-nicht-allein",children:"SHA-512 ist nicht allein"}),"\n",(0,r.jsx)(n.p,{children:"SHA-512 geh\xf6rt zu einer Gruppe eng verwandter Algorithmen innerhalb von SHA-2."}),"\n",(0,r.jsx)(n.p,{children:"Dazu geh\xf6ren insbesondere:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"SHA-384\nSHA-512\nSHA-512/224\nSHA-512/256\n"})}),"\n",(0,r.jsx)(n.p,{children:"Diese Algorithmen verwenden die 64-Bit-basierte SHA-512-Struktur, unterscheiden sich aber unter anderem bei Initialwerten und Ausgabel\xe4ngen."}),"\n",(0,r.jsx)(n.p,{children:"Besonders interessant ist:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"SHA-512/256\n"})}),"\n",(0,r.jsx)(n.p,{children:"Der Algorithmus erzeugt wie SHA-256 einen 256-Bit-Hash, arbeitet intern aber mit der SHA-512-Struktur."}),"\n",(0,r.jsx)(n.p,{children:"Damit wird noch einmal deutlich:"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Die L\xe4nge des Hashwerts allein beschreibt nicht den Aufbau eines Hashalgorithmus."})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.a,{href:"/docs/algorithmen/sha-2/was-ist-sha-384",children:"SHA-384"})," haben wir uns bereits genauer angeschaut; SHA-512/224 und SHA-512/256 folgen in ",(0,r.jsx)(n.a,{href:"/docs/algorithmen/sha-2/was-sind-sha-512-224-und-sha-
1512-256",children:"Was sind SHA-512/224 und SHA-512/256?"}),"."]}),"\n",(0,r.jsx)(d.A,{book:"understandingCryptography",children:(0,r.jsx)(n.p,{children:"Wenn du kryptografische Hashfunktionen und ihre Konstruktion noch tiefer verstehen m\xf6chtest, kann ich dieses Buch empfehlen."})}),"\n",(0,r.jsx)(n.h2,{id:"das-wichtigste-in-k\xfcrze",children:"Das Wichtigste in K\xfcrze"}),"\n",(0,r.jsx)(n.p,{children:"SHA-512 ist eine kryptografische Hashfunktion aus der SHA-2-Familie."}),"\n",(0,r.jsx)(n.p,{children:"Die wichtigsten Eigenschaften sind:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["SHA-512 erzeugt einen ",(0,r.jsx)(n.strong,{children:"512-Bit-Hash"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Das entspricht ",(0,r.jsx)(n.strong,{children:"64 Byte oder 128 Hex-Zeichen"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["SHA-512 verarbeitet ",(0,r.jsx)(n.strong,{children:"1024-Bit-Bl\xf6cke"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Ein Block wird zun\xe4chst in ",(0,r.jsx)(n.strong,{children:"16 \xd7 64-Bit-W\xf6rter"})," zerlegt."]}),"\n",(0,r.jsxs)(n.li,{children:["Das Message Schedule erweitert diese auf ",(0,r.jsx)(n.strong,{children:"80 W\xf6rter"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["SHA-512 f\xfchrt ",(0,r.jsx)(n.strong,{children:"80 Kompressionsrunden"})," pro Block aus."]}),"\n",(0,r.jsxs)(n.li,{children:["Die internen Berechnungen arbeiten \xfcberwiegend mit ",(0,r.jsx)(n.strong,{children:"64-Bit-W\xf6rtern"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Additionen erfolgen modulo ",(0,r.jsx)(n.code,{children:"2\u2076\u2074"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Das Padding verwendet ein ",(0,r.jsx)(n.strong,{children:"128-Bit-L\xe4ngenfeld"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["NIST f\xfchrt f\xfcr SHA-512 ",(0,r.jsx)(n.strong,{children:"512 Bit Preimage Resistance"})," und ",(0,r.jsx)(n.strong,{children:"256 Bit Collision Resistance"})," auf."]}),"\n",(0,r.jsx)(n.li,{children:"SHA-512 ist nicht einfach SHA-256 mit einem l\xe4ngeren Hashwert."}),"\n",(0,r.jsx)(n.li,{children:"SHA-512 sollte nicht einfach direkt zur Passwortspeicherung verwendet werden."}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Vereinfacht l\xe4sst sich der Ablauf so zusammenfassen:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"Eingabe\n\u2193\nPadding\n\u2193\n1024-Bit-Bl\xf6cke\n\u2193\n16 \xd7 64-Bit-W\xf6rter\n\u2193\n80-Wort-Message-Schedule\n\u2193\n80 Kompressionsrunden\n\u2193\nFeed-forward\n\u2193\n512-Bit-Hash\n"})}),"\n",(0,r.jsx)(n.h2,{id:"wie-geht-es-weiter",children:"Wie geht es weiter?"}),"\n",(0,r.jsx)(n.p,{children:"Jetzt kennen wir die wichtigsten Eigenschaften und den grunds\xe4tzlichen Aufbau von SHA-512."}),"\n",(0,r.jsx)(n.p,{children:"Als N\xe4chstes k\xf6nnen wir tiefer in die Berechnung einsteigen:"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Wie funktioniert SHA-512?"})}),"\n",(0,r.jsx)(n.p,{children:"Dort schauen wir uns unter anderem genauer an:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"wie das Padding berechnet wird,"}),"\n",(0,r.jsx)(n.li,{children:"wie aus dem Block die ersten 16 W\xf6rter entstehen,"}),"\n",(0,r.jsxs)(n.li,{children:["wie ",(0,r.jsx)(n.code,{children:"W\u2081\u2086"})," bis ",(0,r.jsx)(n.code,{children:"W\u2087\u2089"})," berechnet werden,"]}),"\n",(0,r.jsx)(n.li,{children:"wie die 64-Bit-\u03C3- und \u03A3-Funktionen funktionieren,"}),"\n",(0,r.jsx)(n.li,{children:"was w\xe4hrend einer der 80 Runden passiert,"}),"\n",(0,r.jsx)(n.li,{children:"und wie daraus schlie\xdflich der fertige Hash entsteht."}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["Danach k\xf6nnen wir SHA-512 \u2013 genau wie SHA-256 \u2013 ",(0,r.jsx)(n.strong,{children:"Schritt f\xfcr Schritt mit einer eigenen Eingabe durchspielen"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"quellen-und-weiterf\xfchrende-standards",children:"Quellen und weiterf\xfchrende Standards"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsxs)(n.strong,{children:["National Institute of Standards and Technology (NIST), ",(0,r.jsx)(n.a,{href:"https://csrc.nist.gov/pubs/fips/180-4/upd1/final",children:"FIPS 180-4 \u2013 Secure Hash Standard (SHS)"})]}),"\nNormative Spezifikation von SHA-512 und den \xfcbrigen Algorithmen der SHA-2-Familie. Enth\xe4lt Padding, Initialwerte, Funktionen, Konstanten, Message Schedule und Kompressionsfunktion."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsxs)(n.strong,{children:["National Institute of Standards and Technology (NIST), ",(0,r.jsx)(n.a,{href:"https://csrc.nist.gov/projects/hash-functions",children:"Hash Functions"})]}
1),"\n\xdcbersicht der von NIST zugelassenen Hashfunktionen sowie ihrer Collision-, Preimage- und Second-Preimage-Sicherheitsst\xe4rken."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsxs)(n.strong,{children:["National Institute of Standards and Technology (NIST), ",(0,r.jsx)(n.a,{href:"https://csrc.nist.gov/projects/cryptographic-algorithm-validation-program/secure-hashing",children:"Cryptographic Algorithm Validation Program: Secure Hashing"})]}),"\nInformationen zur Validierung von Implementierungen der SHA-Algorithmen."]}),"\n"]}),"\n"]})]})}function x(e={}){let{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(g,{...e})}):g(e)}},5756(e,n,i){i.d(n,{R:()=>r});var s=i(6540);function r(e,n=.2){let i=(0,s.useRef)(!1),t=(0,s.useRef)(null),a=(0,s.useRef)(e);return a.current=e,(0,s.useEffect)(()=>()=>t.current?.disconnect(),[]),(0,s.useCallback)(e=>{if(t.current?.disconnect(),!e||i.current)return;let s=()=>{i.current||(i.current=!0,a.current())};"u"<typeof IntersectionObserver?s():(t.current=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&(s(),t.current?.disconnect())},{threshold:n}),t.current.observe(e))},[n])}},8611(e,n,i){i.d(n,{K:()=>a});var s=i(6540),r=i(9718),t=i(5756);function a(e,n){let i=(0,s.useRef)(!1),a=(0,s.useRef)(!1),l=(0,t.R)(()=>r.zS.trackToolView({tool_name:e,tool_type:n})),d=(0,s.useCallback)((s={})=>{i.current||(i.current=!0,r.zS.trackToolStart({tool_name:e,tool_type:n,...s}))},[e,n]),h=(0,s.useCallback)((i,s={})=>{r.zS.trackToolInteraction({tool_name:e,tool_type:n,tool_action:i,...s})},[e,n]);return{ref:l,start:d,interaction:h,complete:(0,s.useCallback)((i={})=>{a.current||(a.current=!0,r.zS.trackToolComplete({tool_name:e,tool_type:n,...i}))},[e,n]),resetCompletion:(0,s.useCallback)(()=>{a.current=!1},[])}}},4206(e,n,i){i.d(n,{A:()=>l});var s=i(4848),r=i(6540),t=i(898);let a={enabled:!1,slots:{}};function l({position:e}){let{publisherId:n,enabled:i,slots:d}=function(){let{siteConfig:e}=(0,t.A)();return e.customFields?.adsense??a}(),h=d[e],c=(0,r.useRef)(null),o=!!(i&&n&&h);return((0,r.useEffect)(()=>{if(!o)return;let e=c.current;if(!(!e||e.getAttribute("data-adsbygoogle-status")))try{(window.adsbygoogle=window.adsbygoogle||[]).push({})}catch{}},[o]),o)?(0,s.jsx)("div",{className:"container_PZIx",style:{minHeight:"280px"},children:(0,s.jsx)("ins",{ref:c,className:"adsbygoogle ad_a2a0",style:{display:"block"},"data-ad-client":n,"data-ad-slot":h,"data-ad-format":"auto","data-full-width-responsive":"true"})}):null}},4476(e,n,i){i.d(n,{A:()=>d});var s=i(4848),r=i(568);let t={understandingCryptography:{title:"Understanding Cryptography",authors:["Christof Paar","Jan Pelzl","Tim G\xfcneysu"],edition:2,year:2024,url:"https://tidd.ly/4AJ0QGP",affiliate:!0}};var a=i(9718);let l="meta_gBcg";function d({book:e,children:n}){let{title:i,authors:h,edition:c,year:o,url:u,affiliate:g}=t[e],x=(0,r.T)({id:"theme.bookRecommendation.ariaLabel",message:"Buchempfehlung",description:"aria-label of the book recommendation box"}),p=(0,r.T)({id:"theme.bookRecommendation.label",message:"Weiterf\xfchrende Literatur",description:"Small heading above the book recommendation"}),j=(0,r.T)({id:"theme.bookRecommendation.cta",message:"Buch ansehen \u2192",description:"Link text to the external book page"}),m=(0,r.T)({id:"theme.bookRecommendation.ctaAriaLabel",message:"{title} ansehen",description:"aria-label of the link to the external book page; {title} is the book title"},{title:i}),b=h.length>1?(0,r.T)({id:"theme.bookRecommendation.authors",message:"{names} und {last}",description:"Author list of the book; {names} is the comma-separated leading authors, {last} the final author"},{names:h.slice(0,-1).join(", "),last:h[h.length-1]}):h.join(""),f=(0,r.T)({id:"theme.bookRecommendation.edition",message:"{edition}. Auflage",description:"Edition of the book; {edition} is the edition number"},{edition:c}),H=(0,r.T)({id:"theme.bookRecommendation.affiliateDisclosure",message:"Affiliate-Link: Wenn du \xfcber diesen Link etwas kaufst, erhalte ich m\xf6glicherweise eine Provision. F\xfcr dich \xe4ndert sich der Preis nicht.",description:"Affiliate disclosure shown below the book recommendation CTA"});return(0,s.jsxs)("aside",{className:"container_uAmn","aria-label":x,children:[(0,s.jsx)("p",{className:"label_Uem6",children:p}),(0,s.jsx)("p",{className:"title_yIho",children:i}),(0,s.jsx)("p",{className:l,children:b}),(0,s.jsxs)("p",{className:l,children:[f," \xb7 ",o]}),n&&(0,s.jsx)("div",{className:"recommendation_Zolq",children:n}),u&&(0,s.jsx)("a",{className:"cta_Lcp_",href:u,target:"_blank",rel:g?"sponsored noopener noreferrer":"noopener noreferrer","aria-label":m,onClick:()=>a.zS.trackBookClick(e),children:j}),g&&(0,s.jsx)("p",{className:"disclosure_H5FU",children:H})]})}},4711(e,n,i){i.d(n,{A:()=>p});var s=i(4848),r=i(6540),t=i(4164),a=i(568),l=i(8611);let d="field_LW3O",h="label_OA6H",c="pill_rxqT",o="pillActive_Vdzj",u={md5:"MD5",sha1:"SHA-1",sha256:"SHA-256",sha384:"SHA-384",sha512:"SHA-512"},g=Object.keys(u);async function x(e,n){let i=await fetch("/api/hash.php",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({algorithm:e,input:n})}),s=null;try{s=await i.json()}catch{}if(!i.ok)throw Error(s?.error||(0,a.T)({id:"theme.hashGenerator.requestFailed",message:"Anfrage fehlgeschlagen (Status {status}).",description:"Error shown when the hash API request fails; {status} is the HTTP status code"},{status:i.status}));if(!s?.hash)throw Error((0,a.T)({id:"theme.hashGenerator.noHashInResponse",message:"Die Antwort enthielt keinen Hash-Wert.",description:"Error shown when the hash API response has no hash field"}));return s.hash}function p({algorithm:e="sha256",fixedAlgorithm:n,initialText:i=""}){let j=void 0!==n,[m,b]=(0,r.useState)(n??e),[f,H]=(0,r.useState)(i),[w,S]=(0,r.useState)(""),[A,k]=(0,r.useState)(!1),[v,B]=(0,r.useState)(null),[N,W]=(0,r.useState)(!1),z=(0,r.useRef)(0),y=(0,r.useId)(),D=(0,r.useId)(),P=(0,r.useId)(),T=(0,r.useId)(),R=u[m],I=(0,l.K)("hash_generator","generator"),E=(0,r.useRef)(!1);(0,r.useEffect)(()=>{let e=++z.current;k(!0),B(null);let n=window.setTimeout(()=>{x(m,f).then(n=>{z.current===e&&(S(n),W(!1),E.current&&I.complete({algorithm:m}))}).catch(n=>{z.current===e&&(S(""),B(n instanceof Error?n.message:(0,a.T)({id:"theme.hashGenerator.unknownError",message:"Unbekannter Fehler bei der Berechnung.",description:"Fallback error shown when hashing fails for an unrecognized reason"})))}).finally(()=>{z.current===e&&k(!1)})},300);return()=>window.clearTimeout(n)},[f,m]);let F=async()=>
1{if(w)try{await navigator.clipboard.writeText(w),W(!0),window.setTimeout(()=>W(!1),2e3)}catch{B((0,a.T)({id:"theme.hashGenerator.copyFailed",message:"Der Hash konnte nicht in die Zwischenablage kopiert werden.",description:"Error shown when copying the hash to the clipboard fails"}))}},K=(0,a.T)({id:"theme.hashGenerator.algorithmLabel",message:"Algorithmus",description:"Label above the algorithm pill selector"}),_=(0,a.T)({id:"theme.hashGenerator.textLabel",message:"Text",description:"Label of the input textarea"}),C=(0,a.T)({id:"theme.hashGenerator.resultLabel",message:"{algorithm}-Hash",description:"Label above the result field; {algorithm} is a technical constant such as SHA-256"},{algorithm:R}),G=(0,a.T)({id:"theme.hashGenerator.copied",message:"Kopiert!",description:"Shown briefly after the hash was copied to the clipboard"}),V=N?G:(0,a.T)({id:"theme.hashGenerator.copyToClipboard",message:"Hash in die Zwischenablage kopieren",description:"aria-label of the copy-to-clipboard button"}),L=N?G:(0,a.T)({id:"theme.hashGenerator.copy",message:"Kopieren",description:"title (tooltip) of the copy-to-clipboard button"}),Z=(0,a.T)({id:"theme.hashGenerator.calculating",message:"Berechne\u2026",description:"Shown in the result field while the hash is being calculated"}),M=(0,a.T)({id:"theme.hashGenerator.noResultYet",message:"Noch kein Ergebnis",description:"Placeholder of the result field before any hash has been calculated"});return(0,s.jsxs)("div",{className:"container_wyxh",ref:I.ref,children:[(0,s.jsxs)("div",{className:d,children:[(0,s.jsx)("span",{className:h,id:y,children:K}),j?(0,s.jsx)("span",{className:(0,t.A)(c,o),children:R}):(0,s.jsx)("div",{className:"pills_rFOW",role:"radiogroup","aria-labelledby":y,children:g.map(e=>(0,s.jsx)("button",{type:"button",role:"radio","aria-checked":e===m,className:(0,t.A)(c,e===m&&o),onClick:()=>{b(e),I.interaction("algorithm_changed",{algorithm:e})},children:u[e]},e))})]}),(0,s.jsxs)("div",{className:d,children:[(0,s.jsx)("label",{htmlFor:D,className:h,children:_}),(0,s.jsx)("textarea",{id:D,className:"textarea_LiyI",value:f,onChange:e=>{H(e.target.value),E.current=!0,I.start({algorithm:m})},rows:4,"aria-describedby":v?T:void 0,"aria-invalid":!!v||void 0})]}),v&&(0,s.jsx)("p",{id:T,role:"alert",className:"error_vUUF",children:v}),(0,s.jsxs)("div",{className:d,children:[(0,s.jsx)("label",{htmlFor:P,className:h,children:C}),(0,s.jsxs)("div",{className:"resultField_JPT5",children:[(0,s.jsx)("input",{id:P,className:"result_a_Bl",type:"text",value:A?Z:w,readOnly:!0,placeholder:M,"aria-live":"polite"}),(0,s.jsx)("button",{type:"button",className:"copyButton_mEkn",onClick:F,disabled:!w,"aria-label":V,title:L,children:N?(0,s.jsx)("svg",{viewBox:"0 0 20 20",width:"16",height:"16","aria-hidden":"true",children:(0,s.jsx)("path",{fill:"currentColor",d:"M8.2 14.4 3.8 10l1.4-1.4 3 3 7-7 1.4 1.4z"})}):(0,s.jsx)("svg",{viewBox:"0 0 20 20",width:"16",height:"16","aria-hidden":"true",children:(0,s.jsx)("path",{fill:"currentColor",d:"M7 2h7a2 2 0 0 1 2 2v9h-2V4H7zm-2 4h7a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2zm0 2v9h7V8z"})})})]})]})]})}},8453(e,n,i){i.d(n,{R:()=>a,x:()=>l});var s=i(6540);let r={},t=s.createContext(r);function a(e){let n=s.useContext(t);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),s.createElement(t.Provider,{value:n},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.