Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [JAVA] Restituzione stringa decrittografata errata

    Ciao a tutti, ho un problema con questo programmino:

    codice:
    class EncodeBetter {
    public static void main(String args[]) {
    
    int j = 0;
    String msg = "This is a test";
    String encmsg = " ";
    String decmsg = " ";
    String key = "codifica";
    
    System.out.print("Messaggio originale: ");
    System.out.println(msg);
    
    //codifica il messaggio
    for (int i = 0; i < msg.length(); i++)
        {
        encmsg += (char) (msg.charAt(i) ^ key.charAt(j));
        j++;
        if (j == 8) j = 0;
        }
    
    System.out.print("Messaggio codificato: ");
    System.out.println(encmsg);
    
    //decodifica il messaggio
    j = 0;
    for (int i = 0; i < msg.length(); i++)  
        {
        decmsg = decmsg + (char) (encmsg.charAt(i) ^ key.charAt(j));
        j++;
        if (j == 8) j = 0;
    }
    
    System.out.print("Messaggio decodificato: ");
    System.out.println(decmsg);
    
     }
    }
    Lo vorrei utilizzare per crittografare e poi decrittografare la stringa msg, che contiene "This is a test". Purtroppo l'output che ottengo è il seguente:

    Messaggio originale: This is a test
    Messaggio codificato: %ROU
    Messaggio decodificato: QP|le3|h>e4qs`


    Come vedete non viene restituita la stringa corretta, qualcuno sa come correggere il codice?
    Grazie in anticipo.

  2. #2
    Scusate se non ho scritto "[JAVA]" nel titolo, ma non riesco a correggerlo anche se lo modifico

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA] Restituzione stringa decrittografata errata

    Originariamente inviato da Quadrato
    Come vedete non viene restituita la stringa corretta, qualcuno sa come correggere il codice?
    Per un motivo banalissimo. All'inizio hai inizializzato le due stringhe non con una stringa vuota "" ma con una stringa con 1 spazio!! E questo "sfalsa" poi tutto!!!

    Inoltre alcune cose:
    - Non sarebbe affatto necessario usare un altro indice! Basta usare i%key.length() ovvero sfruttare l'operazione di "modulo".

    - Nel ciclo di decodifica hai usato msg.length(). Meglio usare la lunghezza del messaggio codificato.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Grazie mille, funziona!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.