Datei hochladen
  1. base64hub
  2. Schlüssel & Hashes
  3. AES entschlüsseln

AES-Entschlüsselung aus Base64

Fügen Sie das verschlüsselte Base64 ein und geben Sie das Passwort ein, um die Nachricht zu lesen. AES-GCM prüft beim Entschlüsseln die Integrität, daher führt ein falsches Passwort oder ein einziges geändertes Zeichen zu einer klaren Fehlermeldung.

Kostenlos ohne Anmeldung, ohne Limits Lokal kein Upload Manipulationsschutz GCM-Tag wird bei jeder Entschlüsselung geprüft Aktualisiert 27.10.2026
Format – überall entschlüsselbar

Ausgabe = Base64( Salt 16 Bytes ‖ IV 12 Bytes ‖ Chiffretext ‖ GCM-Tag 16 Bytes ). Schlüssel = PBKDF2-HMAC-SHA256(Passwort als UTF-8, Salt, 310.000 Iterationen, 32 Bytes). Chiffre: AES-256-GCM, ohne Associated Data. Code zum Entschlüsseln:

Python (pip install cryptography)

import base64
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
from cryptography.hazmat.primitives import hashes

def decrypt(b64, password):
    data = base64.b64decode(b64)
    salt, iv, ct = data[:16], data[16:28], data[28:]
    key = PBKDF2HMAC(algorithm=hashes.SHA256(), length=32, salt=salt,
                     iterations=310000).derive(password.encode("utf-8"))
    return AESGCM(key).decrypt(iv, ct, None).decode("utf-8")
Node.js

const crypto = require("crypto");
function decrypt(b64, password) {
  const data = Buffer.from(b64, "base64");
  const salt = data.subarray(0, 16), iv = data.subarray(16, 28);
  const tag = data.subarray(data.length - 16), ct = data.subarray(28, data.length - 16);
  const key = crypto.pbkdf2Sync(password, salt, 310000, 32, "sha256");
  const d = crypto.createDecipheriv("aes-256-gcm", key, iv);
  d.setAuthTag(tag);
  return Buffer.concat([d.update(ct), d.final()]).toString("utf8");
}

Wird in Ihrem Browser verarbeitet. Diese Seite kann Ihre Daten nirgendwohin senden – woher wir das wissen

So entschlüsseln Sie AES-Text

  1. Entschlüsseln ist ausgewählt, und ein Beispiel ist bereits geladen. Sein Passwort lautet correct horse battery staple, so sehen Sie zuerst einen erfolgreichen Durchlauf.
  2. Fügen Sie Ihre Zeichenkette in Verschlüsseltes Base64 ein. Standard- und URL-sicheres Base64 funktionieren beide, mit oder ohne =, und Zeilenumbrüche werden ignoriert.
  3. Geben Sie beim Schlüsseltyp Passwort das Passwort ein und, falls der Absender sie geändert hat, dieselben PBKDF2-Iterationen (Standard 310.000). Für Roher Schlüssel fügen Sie den 16, 24 oder 32 Bytes langen Schlüssel als Base64 oder Hex ein.
  4. Klicken Sie auf Entschlüsseln oder drücken Sie Enter im Passwortfeld. Die Nachricht erscheint unter Entschlüsselter Text. Ist der Inhalt kein UTF-8-Text, wird er als Base64 angezeigt, und Herunterladen speichert die Original-Bytes.

Ein erfolgreicher Durchlauf meldet „Entschlüsselt und authentifiziert“: Das GCM-Tag hat gepasst, der Text ist also genau das, was der Absender verschlüsselt hat.

Base64 entschlüsseln oder Base64 dekodieren?

Viele suchen nach „Base64 entschlüsseln“ (oder „Base64 decrypt“), obwohl sie eine ganz normale Base64-Zeichenkette haben. Base64 ist eine Kodierung ohne Schlüssel, eine solche Zeichenkette muss also nur dekodiert werden, und das erledigt der Base64-Decoder. Ein schneller Test: Ergibt das Dekodieren lesbaren Text oder eine erkennbare Datei, war es nie verschlüsselt. Ergibt es zufällig wirkende Bytes und hat Ihnen jemand ein Passwort gegeben, haben Sie Chiffretext, und diese Seite ist die richtige, sofern er im unten beschriebenen Format erstellt wurde. Base64 ist keine Verschlüsselung erklärt den Unterschied.

Mit einem bekannten Wert testen

Diese Zeichenkette wurde außerhalb des Browsers mit der Python-Funktion encrypt() aus der Formatdokumentation verschlüsselt, mit dem Passwort correct horse battery staple:

SD8wB+5V2GRfupy/yEY1xTUE8d5z9fwbzQ0gxeRzbtym1I4O7A9Q2NYnbYxEPYgvwJ4Q7DU5q/sugOx+B1Ro3ujkDXvnl/y2XYuji9A=

Sie wird zu Meet me at the usual place at 10. entschlüsselt. Die 104 Zeichen ergeben dekodiert 77 Bytes: 16 Salt, 12 IV, 33 Chiffretext und 16 Tag. Die Aufschlüsselung unter dem Ergebnis zeigt dieselbe Aufteilung für jede eingefügte Zeichenkette.

Fehlermeldungen und ihre Bedeutung

MeldungÜbliche Ursache
Entschlüsselung fehlgeschlagen: falsches Passwort oder falscher Schlüssel, falscher Modus, oder die Daten wurden verändertFalsches Passwort, eine andere Iterationszahl, ein roher Schlüssel für einen passwortverschlüsselten Text oder umgekehrt, oder ein beim Kopieren verlorenes Zeichen
Zu kurz für einen Chiffretext aus diesem ToolDie Zeichenkette wurde abgeschnitten oder stammt gar nicht aus diesem Tool
Ein AES-Schlüssel muss 16, 24 oder 32 Bytes lang seinDer rohe Schlüssel hat die falsche Länge; prüfen Sie, ob er Base64 oder Hex ist
Dieser Browser unterstützt keine 192-Bit-AES-SchlüsselChrome und Edge erlauben nur 128- und 256-Bit-Schlüssel; entschlüsseln Sie stattdessen mit Python oder Node.js
Die Iterationen müssen zwischen 1.000 und 10.000.000 liegenIm Feld für die Iterationen steht ein unmöglicher Wert

GCM unterscheidet nicht zwischen einem falschen Passwort und manipulierten Daten: In beiden Fällen passt das Tag nicht, und es wird nichts ausgegeben. Nicht authentifizierte Modi wie CBC können statt eines Fehlers Datenmüll liefern.

Zeichenketten, die dieses Tool nicht öffnen kann

Das Format ist hier festgelegt: Base64( salt[16] ‖ iv[12] ‖ ciphertext ‖ tag[16] ) für Passwörter, Base64( iv[12] ‖ ciphertext ‖ tag[16] ) für rohe Schlüssel, AES-GCM, PBKDF2-HMAC-SHA256 mit 310.000 Iterationen. Andere Tools schreiben andere Formate, und die ersten Zeichen verraten sie oft:

Beginnt mitErzeugt vonEntschlüsseln mit
U2FsdGVkX1openssl enc oder CryptoJS mit Passphrase (Header Salted__)openssl enc -d -a mit den ursprünglichen Optionen für Chiffre und KDF
gAAAAAeinem Fernet-Token (Python cryptography)Fernet(key).decrypt(token)
-----BEGIN PGP MESSAGE-----OpenPGPgpg --decrypt
-----BEGIN AGE ENCRYPTED FILE-----ageage --decrypt

Weitere erkennbare Anfänge sind unter Häufige Base64-Präfixe gesammelt.

Entschlüsseln in Node.js und Python

Dasselbe Format funktioniert auch ohne Browser. In Node.js:

const crypto = require("crypto");

function decrypt(b64, password) {
  const data = Buffer.from(b64, "base64");
  const salt = data.subarray(0, 16), iv = data.subarray(16, 28);
  const tag = data.subarray(data.length - 16), ct = data.subarray(28, data.length - 16);
  const key = crypto.pbkdf2Sync(password, salt, 310000, 32, "sha256");
  const d = crypto.createDecipheriv("aes-256-gcm", key, iv);
  d.setAuthTag(tag);
  return Buffer.concat([d.update(ct), d.final()]).toString("utf8");
}

function encrypt(text, password) {
  const salt = crypto.randomBytes(16), iv = crypto.randomBytes(12);
  const key = crypto.pbkdf2Sync(password, salt, 310000, 32, "sha256");
  const c = crypto.createCipheriv("aes-256-gcm", key, iv);
  const ct = Buffer.concat([c.update(text, "utf8"), c.final()]);
  return Buffer.concat([salt, iv, ct, c.getAuthTag()]).toString("base64");
}

Für eine Zeichenkette mit rohem Schlüssel in Python lassen Sie Salt und PBKDF2 weg und lassen die IV bei Byte 0 beginnen:

import base64
from cryptography.hazmat.primitives.ciphers.aead import AESGCM

def decrypt_raw(b64, key_b64):
    data = base64.b64decode(b64)
    iv, ct = data[:12], data[12:]
    return AESGCM(base64.b64decode(key_b64)).decrypt(iv, ct, None).decode("utf-8")

Die Passwortvariante für Python steht auf der Seite AES verschlüsseln. Verschlüsselung dieser Art ist dafür gedacht, ein Geheimnis von einer Person an eine andere zu übergeben; ist es angekommen, verschieben Sie es in einen Passwort- oder Secrets-Manager, statt den Chiffretext aufzubewahren.

Häufige Fragen

Kann ich Base64 ohne Passwort entschlüsseln?

Wenn es nur Base64 ist, ja, denn dann gibt es nichts zu entschlüsseln: Fügen Sie es in den Base64-Decoder ein. Wenn es AES-Chiffretext in Base64 ist, nein. Ohne Passwort oder Schlüssel lassen sich die Bytes nicht wiederherstellen, und kein Tool kann ein starkes Passwort erraten.

Warum meldet das Tool ein falsches Passwort, obwohl es stimmt?

Prüfen Sie zuerst die PBKDF2-Iterationen: Sie werden nicht im Chiffretext gespeichert, ein Absender, der sie geändert hat, muss Ihnen die Zahl also mitteilen. Achten Sie außerdem darauf, dass die Zeichenkette vollständig kopiert wurde und wirklich aus dem Format dieses Tools stammt.

Kann dieses Tool Text aus OpenSSL oder CryptoJS entschlüsseln?

Nein. Zeichenketten, die mit U2FsdGVkX1 beginnen, tragen den OpenSSL-Header Salted__, nutzen eine andere Schlüsselableitung und meist den CBC-Modus. Entschlüsseln Sie sie mit openssl enc -d und denselben Optionen, mit denen sie verschlüsselt wurden.

Was passiert mit dem entschlüsselten Text?

Er wird auf der Seite angezeigt und nirgendwo sonst. Die Entschlüsselung läuft mit WebCrypto in Ihrem Browser, und die Content Security Policy der Seite blockiert jede Netzwerkanfrage außer dem Seitenaufrufzähler von Cloudflare, daher werden weder das Passwort noch die Nachricht gesendet.