[JaVa] un piccolo rompicapo!

Discussione in 'Java' iniziata da pinkmoon, 14 Giugno 2007.

  1. pinkmoon

    pinkmoon Nuovo Utente

    Registrato:
    14 Giugno 2007
    Messaggi:
    1
    Mi Piace Ricevuti:
    1
    Punteggio:
    0
    Salve a tutti!
    Volevo esporvi il seguente problema.

    Ho un'applicazione client e una server per l'autenticazione, devo fare in modo che la password non viaggi in chiaro, senza però utilizzare il package security di java.

    Il procedimento in breve è il seguente :

    Il server mi invia una stringa CASUALE di 8 caratteri .. str1;
    Il client invia al server una stringa str3 (sempre di 8 caratteri) ottenuta come combinazione di str2 (altra stringa di 8 caratteri in possesso del client, sarebbe una password) e di str1.

    Ricapitolando : il client riceve str1 (stringa casuale di 8 caratteri dal server) , la combina con str2 facendo uno xor carattere per carattere... ottengo str3:


    StringBuffer temp = new StringBuffer();
    for (int i= 0; i<8;i++){
    temp.append( (char)(str1.charAt(i)^str2.charAt(i)) );
    }

    Poi converto in stringa perchè devo inviarlo su un Printer che nn accetta stringbuffer ma solo string

    String str3 = new String (temp.toString());
    os.println(str3);

    Ho inviato str3 che è lo xor di str1 e str2 ok!


    Ora dal lato server ricevo str3, devo risalire alla password (per verificarla) ossia a str2!
    Ho pensato : semplice rifaccio lo xor!



    StringBuffer temp = new StringBuffer();
    for (int i= 0; i<8;i++){
    temp.append( (char)(str3.charAt(i)^str1.charAt(i)) );
    }


    String str2 = new String (temp.toString());

    Infatti ottengo la str2 originaria.

    Il problema però è il seguente : molte volte non ottengo precisamente str2 ma una stringa troncata ...

    es : stringa del client str2 = abcd
    stringa ricavata dal server con lo xor str2 = a oppure abc oppure completa!

    Ho pensato si tratti del casting che faccio in entrambi i casi, in quanto lo xor tra 2 caratteri dovrebbe restituire un intero (4byte) a fronte del casting char(2byte) che faccio. Non saprei, così funziona ma non sempre.
    Avete qualche idea "più pulita" della mia? Ve ne sarei grato!
     
    A ottofonsuppost piace questo elemento.
Sto caricando...

Condividi questa Pagina