So entschlüsseln Sie AES-Text
- 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. - 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. - 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.
- 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ändert | Falsches 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 Tool | Die Zeichenkette wurde abgeschnitten oder stammt gar nicht aus diesem Tool |
| Ein AES-Schlüssel muss 16, 24 oder 32 Bytes lang sein | Der 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üssel | Chrome 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 liegen | Im 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 mit | Erzeugt von | Entschlüsseln mit |
|---|---|---|
U2FsdGVkX1 | openssl enc oder CryptoJS mit Passphrase (Header Salted__) | openssl enc -d -a mit den ursprünglichen Optionen für Chiffre und KDF |
gAAAAA | einem Fernet-Token (Python cryptography) | Fernet(key).decrypt(token) |
-----BEGIN PGP MESSAGE----- | OpenPGP | gpg --decrypt |
-----BEGIN AGE ENCRYPTED FILE----- | age | age --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.