[GELÖST] Text verschlüsseln / entschlüsseln

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
tobi258
Beiträge: 36
Registriert: 30.08.2022 11:16:04

[GELÖST] Text verschlüsseln / entschlüsseln

Beitrag von tobi258 » 05.10.2024 19:17:21

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
Zuletzt geändert von tobi258 am 09.10.2024 12:51:41, insgesamt 1-mal geändert.
----
Gruß Tobi

kreuzschnabel
Beiträge: 498
Registriert: 24.09.2020 14:51:14

Re: Text verschlüsseln / entschlüsseln

Beitrag von kreuzschnabel » 05.10.2024 19:23:40

Suchst du Debiangpa?

--ks
Hier so: Debian Stable/Sid (nach Laune) – KDE Plasma – Lenovo Thinkpad T470p – i7-7700HQ – 32GB RAM

Benutzeravatar
kalle123
Beiträge: 3037
Registriert: 28.03.2015 12:27:47
Wohnort: Mönchengladbach

Re: Text verschlüsseln / entschlüsseln

Beitrag von kalle123 » 05.10.2024 19:24:21

Hier

https://www.google.com/search?q=linux+t ... s-wiz-serp

nicht fündig geworden??

cu KH

uname
Beiträge: 12406
Registriert: 03.06.2008 09:33:02

Re: Text verschlüsseln / entschlüsseln

Beitrag von uname » 05.10.2024 22:06:47

Ohne GUI Debianaespipe. Eigentlich sehr einfach.

tobo
Beiträge: 2346
Registriert: 10.12.2008 10:51:41

Re: Text verschlüsseln / entschlüsseln

Beitrag von tobo » 06.10.2024 02:39:27

Ich würde erstmal nach "openssl with gui" suchen.

uname
Beiträge: 12406
Registriert: 03.06.2008 09:33:02

Re: Text verschlüsseln / entschlüsseln

Beitrag von uname » 06.10.2024 06:23:52

7-Zip kann auch AES.

Zenturio19
Beiträge: 318
Registriert: 02.06.2011 11:45:33

Re: Text verschlüsseln / entschlüsseln

Beitrag von Zenturio19 » 06.10.2024 07:30:07

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

tobi258
Beiträge: 36
Registriert: 30.08.2022 11:16:04

Re: Text verschlüsseln / entschlüsseln

Beitrag von tobi258 » 06.10.2024 07:58:33

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.
----
Gruß Tobi

uname
Beiträge: 12406
Registriert: 03.06.2008 09:33:02

Re: Text verschlüsseln / entschlüsseln

Beitrag von uname » 06.10.2024 08:34:29

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

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>
2.) Lösung ohne JavaScript-Bibliothek:

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>

tobi258
Beiträge: 36
Registriert: 30.08.2022 11:16:04

Re: Text verschlüsseln / entschlüsseln

Beitrag von tobi258 » 07.10.2024 12:18:19

uname hat geschrieben: ↑ zum Beitrag ↑
06.10.2024 08:34:29
2.) Lösung ohne JavaScript-Bibliothek:
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

uname
Beiträge: 12406
Registriert: 03.06.2008 09:33:02

Re: Text verschlüsseln / entschlüsseln

Beitrag von uname » 07.10.2024 12:49:22

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>

debra
Beiträge: 25
Registriert: 27.09.2024 03:12:18

Re: Text verschlüsseln / entschlüsseln

Beitrag von debra » 07.10.2024 15:15:36

Debiankgpg und Debiankleopatra 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:
5052
kgpg mus mit kgpg -d aufgerufen werden.

rodney
Beiträge: 373
Registriert: 09.12.2016 04:15:59

Re: Text verschlüsseln / entschlüsseln

Beitrag von rodney » 07.10.2024 18:09:50

tobi258 hat geschrieben: ↑ zum Beitrag ↑
06.10.2024 07:58:33
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.
Warum nicht die Zwischenablage direkt verarbeiten und Schritt 2 komplett auslassen (benoetigt Debianxclip)?

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'
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.

tobi258
Beiträge: 36
Registriert: 30.08.2022 11:16:04

Re: Text verschlüsseln / entschlüsseln

Beitrag von tobi258 » 09.10.2024 12:51:24

rodney hat geschrieben: ↑ zum Beitrag ↑
07.10.2024 18:09:50
Warum nicht die Zwischenablage direkt verarbeiten und Schritt 2 komplett auslassen (benoetigt Debianxclip)?

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'
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.

Das passt perfekt, vielen Dank.

@uname + @debra
Auch euch noch einmal ein Dankeschön.
----
Gruß Tobi

Antworten