Woran könnte es liegen, dass die Entschlüsselung der AES verschlüsselten Nachricht vom Client auf der Serverseite nicht korrekt funktioniert?

Beschreibung:

Ich habe eine Client-Server-Anwendung, bei der der Server einen Befehl an den Client sendet, der diesen Befehl auf dem Client ausführt und dann das Ausgaberesultat zurück an den Server schickt. Der Command-Output wird verschlüsselt, bevor er an den Server gesendet wird, und sollte auf der Serverseite entschlüsselt werden, um die Ausgabe anzuzeigen.

Ablauf:

Client:

public void executeCommand() {
    try {
        Process p = Runtime.getRuntime().exec("cmd /c " + commandInput);
        p.getOutputStream().close();


        InputStream processStdOutput = p.getInputStream();
        Reader r = new InputStreamReader(processStdOutput);
        BufferedReader br = new BufferedReader(r);
        String line;


        while ((line = br.readLine()) != null) {
            writeToServerSocket("cmd18721378231dcad2");
            writeToServerSocket(line + "\n");
            writer.flush();
        }


        p.waitFor();
    } catch (Exception ex) {
        System.out.println(ex.getLocalizedMessage());
    }
}

public void writeToServerSocket(String message) {
	try {
		String encodedMessage = EncryptionHelper.encrypt(message);
		writer.write(encodedMessage);
	} catch (Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

Server:

In einer Dauerschleife wird überprüft:

...
String encryptedInput = scanner.nextLine();
            		String input = EncryptionHelper.decrypt(encryptedInput); // Hier vermutlich Fehler
...
else if (input.contains("cmd18721378231dcad2")) {
    String commandOutput = input.substring(19);
    // Problem: Die Entschlüsselung des commandOutput funktioniert nicht korrekt
    // Hier sollte der entschlüsselte Text angezeigt werden
    controller.updatejTextAreaAllChat(commandOutput + "\n");
}

...

Problem:

Der verschlüsselte Command-Output wird vermutlich (nicht komplett sicher da System.out.println zum debuggen beim Server nicht funktioniert aus welchem Grund auch immer) erfolgreich an den Server gesendet, aber die Entschlüsselung auf der Serverseite funktioniert nicht wie erwartet. Der entschlüsselte Text wird nicht korrekt angezeigt, und es wird sobald ich die Anwendung beende die Fehlermeldung "Input byte array has incorrect ending byte" angezeigt.

Code für die Verschlüsselung/Entschlüsselung:

public class EncryptionHelper {
    private static final String KEY = "mysecretkey";


    public static String encrypt(String plainText) throws Exception {
        // ... (Verschlüsselungslogik)
    }


    public static String decrypt(String encryptedText) throws Exception {
        // ... (Entschlüsselungslogik)
    }
}

Was habe ich bereits versucht:

  • Die Übertragung der verschlüsselten Daten wurde überprüft und scheint intakt zu sein.
  • Die Verschlüsselungslogik wurde überprüft und sie scheint korrekt zu sein.
  • Andere Bereiche des Codes wurden überprüft, um sicherzustellen, dass sie das Entschlüsselungsproblem nicht verursachen.
Java, Code, Eclipse, encryption, Socket
Cross Origin Anfrage blockiert?

Ich möchte gerade eine REST-API für mein Heimnetzwerk einrichten um über z.B. einen button einen CMD befehl auf dem Server PC auszuführen.

Mein Pythonscript für die API:

from flask import Flask, request, jsonify
from flask_cors import CORS

app = Flask(__name__)
CORS(app)

@app.route('/execute-command', methods=['POST'])
def execute_command():
  # Hier wird der Code zum Ausführen des Befehls eingefügt
  result = "Befehl wurde ausgeführt."
  return jsonify({"response": result})

if __name__ == '__main__':
  app.run(host='0.0.0.0', port=5000)
Mein HTML Script<!DOCTYPE html>
<html>
<head>
  <title>API Test</title>
</head>
<body>
  <button id="executeBtn">Befehl ausführen</button>
<script>
  document.getElementById('executeBtn').addEventListener('click', function() {
    fetch('http://localhost:5000/execute-command', { // Verwende absolute URL
      method: 'POST',
    })
    .then(response => response.json())
    .then(data => {
      console.log(data);
    })
    .catch(error => {
      console.error('Fehler:', error);
    });
  });
</script>
</body>
</html> 

Ich bekomme als Fehler von Firefox in der Konsole:

Quellübergreifende (Cross-Origin) Anfrage blockiert: Die Gleiche-Quelle-Regel verbietet das Lesen der externen Ressource auf http://localhost:5000/execute-command. (Grund: CORS-Anfrage schlug fehl). Statuscode: (null).

Fehler: TypeError: NetworkError when attempting to fetch resource

Entschuldigung wenn es offensichtlich ist, bin da noch sehr frisch und habe keine Lösung gefunden.

Netzwerk, HTML, Webseite, JavaScript, HTML5, Code, Netzwerktechnik, Port, Programmiersprache, Python, Webentwicklung, JSON, Flask
Werden Software Entwickler durch KI ersetzt?

GPT4 kann ganz locker Snake, 4 gewinnt und GUIs programmieren. Der Chef von OpenAi redet schon von AGIs, die bald kommen sollen. Da frage ich mich einfach, ob es wirklich Sinn macht mein duales Studium in angewandter Informatik wirklich fortzusetzen.

Noch hilft mir GPT4 nicht wirklich in der Firma (Bank), da wir fast nur eigene Frameworks haben. Aber was wenn GPT5 oder bessere Modelle auch unsere Frameworks verstehen und dann eigenständig programmieren können?

Ich denke wirklich einfach abzubrechen und eine Handwerksausbildung bei einer sehr großen Firma zu machen. Ich sehe einfach nicht, dass GPT nicht in der Lage sein wird Banking Programme selbst zu schreiben. Ich bin nicht der beste Programmierer und bin sehr stark auf Banking Software spezialisiert.

Auch der OpenAI Chef meinte, dass es wohl aussieht, dass es erst Künstler und Programmierer trifft und zuletzt Handwerker.

Was ist eure Meinung? Hat Software Entwicklung Zukunft? Ich arbeite übrigens im öffentlichen Dienst, was mir ein bisschen mehr Sicherheit gibt, aber wenn KIs selbst programmieren, wird es meiner Meinung nach nicht mehr so viel Bedarf für Programmierer geben.

Ich will ganz entspannt meinen Job machen, ohne darüber nachzudenken, dass ich bald arbeitslos bin. Und ich würde gern für ein Eigenheim sparen usw. Da steht mir GTP einfach zu sehr im Weg. Was ist eure ehrliche Meinung? Könnte ich als Software Entwickler mindestens die nächsten 20-30 Jahre arbeiten?

Nein, hat Zukunft 100%
Ja, werden ersetzt 0%
Studium, Mathematik, Technik, IT, programmieren, Java, Code, Informatik, künstliche Intelligenz, Programmiersprache, Python, Softwareentwicklung, Student, Universität, ChatGPT

Meistgelesene Beiträge zum Thema Code