[GELÖST] Text verschlüsseln / entschlüsseln
[GELÖST] Text verschlüsseln / entschlüsseln
Hallo,
ich suche ein Program möglichst mit GUI um Klartext mithilfe von AES zu verschlüsseln / entschlüsseln.
Am besten direkt aus den Debianpaketen.
Im Prinzip suche ich genau dieses funtionalität dieses Onlinetools, jedoch als lokale installation.
https://tools.adminforge.de/encryption
ich suche ein Program möglichst mit GUI um Klartext mithilfe von AES zu verschlüsseln / entschlüsseln.
Am besten direkt aus den Debianpaketen.
Im Prinzip suche ich genau dieses funtionalität dieses Onlinetools, jedoch als lokale installation.
https://tools.adminforge.de/encryption
Zuletzt geändert von tobi258 am 09.10.2024 12:51:41, insgesamt 1-mal geändert.
----
Gruß Tobi
Gruß Tobi
-
- Beiträge: 498
- Registriert: 24.09.2020 14:51:14
Re: Text verschlüsseln / entschlüsseln
Hier so: Debian Stable/Sid (nach Laune) – KDE Plasma – Lenovo Thinkpad T470p – i7-7700HQ – 32GB RAM
Re: Text verschlüsseln / entschlüsseln
Ohne GUI aespipe. Eigentlich sehr einfach.
Re: Text verschlüsseln / entschlüsseln
Ich würde erstmal nach "openssl with gui" suchen.
Re: Text verschlüsseln / entschlüsseln
7-Zip kann auch AES.
-
- Beiträge: 318
- Registriert: 02.06.2011 11:45:33
Re: Text verschlüsseln / entschlüsseln
Hi,
schau' Dir mal VeraCrypt an - hab' ich unter Win$ laufen, läuft aber auch unter Linux. Und AES kann es laut Wiki auch.
LG
schau' Dir mal VeraCrypt an - hab' ich unter Win$ laufen, läuft aber auch unter Linux. Und AES kann es laut Wiki auch.
LG
Re: Text verschlüsseln / entschlüsseln
Danke für Eure Antworten.
Ich denke ich habe mich noch nicht eindeutig ausgedrückt,
da ich keine Dateien verschlüsseln möchte sondern nur Text.
Und so wie ich das sehe können dies die vorgeschlagenen Programme mit meinem gewünschten Ablauf nicht.
Ich stelle mir folgenden Ablauf vor:
- Text markieren und in in Zwischenablage kopieren
- Text in GUI Programm einfügen
- Ausgabe des mit AES verschlüsselten Textes wieder in Zwischenablage kopieren.
Schaut Euch mal das Onlinetool in meinem Eingangspost hierzu an.
Ich denke ich habe mich noch nicht eindeutig ausgedrückt,
da ich keine Dateien verschlüsseln möchte sondern nur Text.
Und so wie ich das sehe können dies die vorgeschlagenen Programme mit meinem gewünschten Ablauf nicht.
Ich stelle mir folgenden Ablauf vor:
- Text markieren und in in Zwischenablage kopieren
- Text in GUI Programm einfügen
- Ausgabe des mit AES verschlüsselten Textes wieder in Zwischenablage kopieren.
Schaut Euch mal das Onlinetool in meinem Eingangspost hierzu an.
----
Gruß Tobi
Gruß Tobi
Re: Text verschlüsseln / entschlüsseln
Aufgrund deines ersten Posts habe ich mal von einer KI zwei Webtools schreiben lassen. Beide können sowohl ver- als auch entschlüsseln. In der ersten Lösung wird die verwendete JavaScript-Cryptobibliothek per CDN aktuell von Cloudflare geladen: https://cdnjs.cloudflare.com/ajax/libs/ ... -js.min.js . Natürlich kannst du crypto-js.min.js auch lokal auf deinem Webserver hosten. Die Version habe ich manuell auf 4.2.0 angepasst aufgrund von hier.
Die zweite Lösung nutzt Funktionen im Browser und daher keine externe Bibliothek. Es kann sein, dass nicht alle Browser das unterstützen. Beachte, dass die beiden Versionen nicht kompatibel sind.
Bei Verwendung von aes2.html kannst du diese einfach irgendwo in deinem Dateisystem abspeichern und im Browser aufrufen. Ein Webserver ist nicht erforderlich.
1.) Programm mit externer JavaScript-Bibliothek oder JavaScript-Bibliothek selbst gehostet
aes1.html
2.) Lösung ohne JavaScript-Bibliothek:
aes2.html
Die zweite Lösung nutzt Funktionen im Browser und daher keine externe Bibliothek. Es kann sein, dass nicht alle Browser das unterstützen. Beachte, dass die beiden Versionen nicht kompatibel sind.
Bei Verwendung von aes2.html kannst du diese einfach irgendwo in deinem Dateisystem abspeichern und im Browser aufrufen. Ein Webserver ist nicht erforderlich.
1.) Programm mit externer JavaScript-Bibliothek oder JavaScript-Bibliothek selbst gehostet
aes1.html
Code: Alles auswählen
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>AES-256 Ver- und Entschlüsselung</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.2.0/crypto-js.min.js"></script>
<style>
body { font-family: Arial, sans-serif; max-width: 800px; margin: 0 auto; padding: 20px; }
textarea { width: 100%; margin-bottom: 10px; font-size: 16px; }
#text, #result { height: 150px; } /* Größere Höhe für die Textfelder */
input { width: 100%; margin-bottom: 10px; }
button { margin-right: 10px; padding: 10px; font-size: 16px; }
</style>
</head>
<body>
<h2>AES-256 Ver- und Entschlüsselung</h2>
<label for="text">Text:</label><br>
<textarea id="text"></textarea><br>
<label for="password">Passwort:</label><br>
<input type="text" id="password"><br>
<button onclick="encrypt()">Verschlüsseln</button>
<button onclick="decrypt()">Entschlüsseln</button><br><br>
<label for="result">Ergebnis:</label><br>
<textarea id="result" readonly></textarea>
<script>
function encrypt() {
var text = document.getElementById("text").value;
var password = document.getElementById("password").value;
try {
var encrypted = CryptoJS.AES.encrypt(text, password);
document.getElementById("result").value = encrypted.toString();
} catch (error) {
document.getElementById("result").value = "Fehler bei der Verschlüsselung: " + error.message;
}
}
function decrypt() {
var text = document.getElementById("text").value;
var password = document.getElementById("password").value;
try {
var decrypted = CryptoJS.AES.decrypt(text, password);
var originalText = decrypted.toString(CryptoJS.enc.Utf8);
if (originalText) {
document.getElementById("result").value = originalText;
} else {
throw new Error("Entschlüsselung fehlgeschlagen. Überprüfen Sie den Text und das Passwort.");
}
} catch (error) {
document.getElementById("result").value = "Fehler bei der Entschlüsselung: " + error.message;
}
}
</script>
</body>
</html>
aes2.html
Code: Alles auswählen
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>AES-256 Ver- und Entschlüsselung mit Web Crypto API</title>
<style>
body { font-family: Arial, sans-serif; max-width: 800px; margin: 0 auto; padding: 20px; }
textarea { width: 100%; margin-bottom: 10px; font-size: 16px; }
#text, #result { height: 150px; }
input { width: 100%; margin-bottom: 10px; }
button { margin-right: 10px; padding: 10px; font-size: 16px; }
</style>
</head>
<body>
<h2>AES-256 Ver- und Entschlüsselung mit Web Crypto API</h2>
<label for="text">Text:</label><br>
<textarea id="text"></textarea><br>
<label for="password">Passwort:</label><br>
<input type="text" id="password"><br>
<button onclick="encrypt()">Verschlüsseln</button>
<button onclick="decrypt()">Entschlüsseln</button><br><br>
<label for="result">Ergebnis:</label><br>
<textarea id="result" readonly></textarea>
<script>
async function generateKey(password) {
const enc = new TextEncoder();
const keyMaterial = await window.crypto.subtle.importKey(
"raw",
enc.encode(password),
{name: "PBKDF2"},
false,
["deriveBits", "deriveKey"]
);
return window.crypto.subtle.deriveKey(
{
name: "PBKDF2",
salt: enc.encode("AES-GCM-256"),
iterations: 100000,
hash: "SHA-256"
},
keyMaterial,
{name: "AES-GCM", length: 256},
true,
["encrypt", "decrypt"]
);
}
async function encrypt() {
const text = document.getElementById("text").value;
const password = document.getElementById("password").value;
try {
const key = await generateKey(password);
const enc = new TextEncoder();
const iv = window.crypto.getRandomValues(new Uint8Array(12));
const encrypted = await window.crypto.subtle.encrypt(
{name: "AES-GCM", iv: iv},
key,
enc.encode(text)
);
const result = btoa(String.fromCharCode.apply(null, new Uint8Array(iv))) +
btoa(String.fromCharCode.apply(null, new Uint8Array(encrypted)));
document.getElementById("result").value = result;
} catch (error) {
document.getElementById("result").value = "Fehler bei der Verschlüsselung: " + error.message;
}
}
async function decrypt() {
const encryptedText = document.getElementById("text").value;
const password = document.getElementById("password").value;
try {
const key = await generateKey(password);
const iv = new Uint8Array(atob(encryptedText.slice(0, 16)).split('').map(c => c.charCodeAt(0)));
const encryptedData = new Uint8Array(atob(encryptedText.slice(16)).split('').map(c => c.charCodeAt(0)));
const decrypted = await window.crypto.subtle.decrypt(
{name: "AES-GCM", iv: iv},
key,
encryptedData
);
const dec = new TextDecoder();
document.getElementById("result").value = dec.decode(decrypted);
} catch (error) {
document.getElementById("result").value = "Fehler bei der Entschlüsselung: " + error.message;
}
}
</script>
</body>
</html>
Re: Text verschlüsseln / entschlüsseln
Das funktioniert schon erstaunlich gut.Danke.
Allerding habe ich festgestellt, dass wenn ich das HTML File auf unterschiedlichen Rechnern ausführe es zu unterschiedlichen Ergebnissen kommt.
Lässt sich das script so anpassen, dass ein genau festgelegter Schlussel verwendet wird, damit die Verschlüsselungsergebnisse auf jedem rechner gleich sind?
----
Gruß Tobi
Gruß Tobi
Re: Text verschlüsseln / entschlüsseln
Man kann wohl eine konstante Initialisierung verwenden. Das Programm sieht dann so aus. Ist damit aber auch unsicherer.
Code: Alles auswählen
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>AES-256 Ver- und Entschlüsselung mit Web Crypto API (Fester IV)</title>
<style>
body { font-family: Arial, sans-serif; max-width: 800px; margin: 0 auto; padding: 20px; }
textarea { width: 100%; margin-bottom: 10px; font-size: 16px; }
#text, #result { height: 150px; }
input { width: 100%; margin-bottom: 10px; }
button { margin-right: 10px; padding: 10px; font-size: 16px; }
</style>
</head>
<body>
<h2>AES-256 Ver- und Entschlüsselung mit Web Crypto API (Fester IV)</h2>
<label for="text">Text:</label><br>
<textarea id="text"></textarea><br>
<label for="password">Passwort:</label><br>
<input type="text" id="password"><br>
<button onclick="encrypt()">Verschlüsseln</button>
<button onclick="decrypt()">Entschlüsseln</button><br><br>
<label for="result">Ergebnis:</label><br>
<textarea id="result" readonly></textarea>
<script>
function getFixedIV() {
return new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]);
}
async function generateKey(password) {
const enc = new TextEncoder();
const keyMaterial = await window.crypto.subtle.importKey(
"raw",
enc.encode(password),
{name: "PBKDF2"},
false,
["deriveBits", "deriveKey"]
);
return window.crypto.subtle.deriveKey(
{
name: "PBKDF2",
salt: enc.encode("AES-GCM-256"),
iterations: 100000,
hash: "SHA-256"
},
keyMaterial,
{name: "AES-GCM", length: 256},
true,
["encrypt", "decrypt"]
);
}
async function encrypt() {
const text = document.getElementById("text").value;
const password = document.getElementById("password").value;
try {
const key = await generateKey(password);
const enc = new TextEncoder();
const iv = getFixedIV(); // Verwenden Sie den festen IV
const encrypted = await window.crypto.subtle.encrypt(
{name: "AES-GCM", iv: iv},
key,
enc.encode(text)
);
const result = btoa(String.fromCharCode.apply(null, new Uint8Array(iv))) +
btoa(String.fromCharCode.apply(null, new Uint8Array(encrypted)));
document.getElementById("result").value = result;
} catch (error) {
document.getElementById("result").value = "Fehler bei der Verschlüsselung: " + error.message;
}
}
async function decrypt() {
const encryptedText = document.getElementById("text").value;
const password = document.getElementById("password").value;
try {
const key = await generateKey(password);
const iv = new Uint8Array(atob(encryptedText.slice(0, 16)).split('').map(c => c.charCodeAt(0)));
const encryptedData = new Uint8Array(atob(encryptedText.slice(16)).split('').map(c => c.charCodeAt(0)));
const decrypted = await window.crypto.subtle.decrypt(
{name: "AES-GCM", iv: iv},
key,
encryptedData
);
const dec = new TextDecoder();
document.getElementById("result").value = dec.decode(decrypted);
} catch (error) {
document.getElementById("result").value = "Fehler bei der Entschlüsselung: " + error.message;
}
}
</script>
</body>
</html>
Re: Text verschlüsseln / entschlüsseln
kgpg und kleopatra können das. Beide sind eigentlich für assymetrische Verschlüsselung gedacht und wollen deswegen eigentlich Absender und Empfänger haben. Man kann aber immer auf symmetrisch stellen. – Nimmt aber immer was man in GPG als default gesetzt hat. Das war bis 2014 CAST5. Dann kurz camellia. Seit 2015 AES. Kann sich aber wieder ändern. Um konfigurieren ist etwas schwierig aber beim entschlüsseln wird der Algorithmus automatisch erkannt. Funktion ist etwas versteckt:
In Kleopatra:
kgpg mus mit kgpg -d aufgerufen werden.
In Kleopatra:
kgpg mus mit kgpg -d aufgerufen werden.
Re: Text verschlüsseln / entschlüsseln
Warum nicht die Zwischenablage direkt verarbeiten und Schritt 2 komplett auslassen (benoetigt xclip)?tobi258 hat geschrieben:06.10.2024 07:58:33Ich stelle mir folgenden Ablauf vor:
- Text markieren und in in Zwischenablage kopieren
- Text in GUI Programm einfügen
- Ausgabe des mit AES verschlüsselten Textes wieder in Zwischenablage kopieren.
Schaut Euch mal das Onlinetool in meinem Eingangspost hierzu an.
Beispiel:
Code: Alles auswählen
alias aes-enc='xclip -o | openssl enc -aes256 -pbkdf2 -base64 | tee "$(tty)" | xclip -i'
alias aes-dec='xclip -o | openssl aes-256-cbc -d -pbkdf2 -a | tee "$(tty)" | xclip -i'
Re: Text verschlüsseln / entschlüsseln
rodney hat geschrieben:07.10.2024 18:09:50Warum nicht die Zwischenablage direkt verarbeiten und Schritt 2 komplett auslassen (benoetigt xclip)?
Beispiel:
Im Terminal aes-enc bzw. aes-dec starten oder zwei Desktopverknuepfungen mit direktem Befehlsaufruf anlegen. So kann mit einem Befehl oder einem Klick der Inahlt der Zwischenablage verschluesselt oder entschluesselt werden ohne den Text in und dann wieder aus einem Gui-Programm zu kopieren.Code: Alles auswählen
alias aes-enc='xclip -o | openssl enc -aes256 -pbkdf2 -base64 | tee "$(tty)" | xclip -i' alias aes-dec='xclip -o | openssl aes-256-cbc -d -pbkdf2 -a | tee "$(tty)" | xclip -i'
Das passt perfekt, vielen Dank.
@uname + @debra
Auch euch noch einmal ein Dankeschön.
----
Gruß Tobi
Gruß Tobi