Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    36

    [Java]Problema parametri message Digest

    Sto realizzando un programma per l'algoritmo per router AGPF in java. Inizialmente ho scritto questo programma in Visual Basic usando per lo SHA-256 una classe scaricata dal web e tutto funziona perfettamente.
    Passando al Java però le cose cominciano a funzionare. L'algoritmo per lo SHA-256 funziona perchè provato dando come parametri semplici "a".getBytes() e verificando i risultati con esempi trovati sul web.
    Non mi trovo invece con i risultati desiderati quando vado a concatenare le varie stringhe che poi andrò a convertire in formato byte. Ecco il codice:

    codice:
    public String Calcola_SHA(String ssid, int index, String alis) throws UnsupportedEncodingException
        {
        	String mac_sha = new String();
        	String alis_sha = new String();
        	String aux = new String();
        	int hex;
        	
        	String sha = new String();
        	byte[] message;
        	
        	
        	sha = "";
        	
        	for(i = 0; i < alis.length()-2; i += 2)
        	{
        		aux = "";
        		for(j = 0; j < 2; j++)
        			aux += alis.charAt(i + j);
        		
        		hex = Integer.parseInt(aux,16);
        		
        		sha += (char)(hex);
        	}
        	
        	sha += serial;
        	
        	for(i = 0; i < mac[index].length()-2; i += 2)
        	{
        		aux = "";
        		for(j = 0; j < 2; j++)
        			aux += mac[index].charAt(i + j);
        		
        		hex = Integer.parseInt(aux,16);
        		
        		sha += (char)(hex);
        	}
        	
            
            
            System.out.println(sha.getBytes());
        	
        	
            md.update(sha.getBytes());
        	message = md.digest();
        	
    
            StringBuffer sb = new StringBuffer();
        	
        	for (int i = 0; i< message.length; i++) {
                aux = Integer.toHexString(0xFF & message[i]);
                if(aux.length()==1)
                	sb.append('0');
                sb.append(aux);
            }
    alis = "64C6DDE3E579B6D986968D3445D23B15CAAF128402AC56000 5CE2075913FDCE8"

    Tenendo presente che i caratteri della stringa "alis" vanno considerati a due a due come un singolo byte così come quelli del mac.

    PS: Grazie per la disponibilità!

    EDIT: Scusate non avevo notato il sottoforum dedicato al Java. Vi chiedo gentilmente di spostare il topic. Grazie 1000!

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    36
    Nessuno può darmi una risposta?

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    36
    Ho trovato il problema ma non riesco a darmi risposta!

    praticamente sbaglia la conversione di alcuni caratteri come il 134. Su visual basic la fa in un modo e sul java in un altro. tutta via ci sono dei caratteri come per esempio il 217 che vengono convertiti alla perfezione...

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    java e la sicurezza hanno regole ben precise, che dubito tu abbia letto per intero.
    Allora alias cosa rappresenta?
    suppongo sia una stringa esadecimale risultato della tua operazione di hashing, ma non puoi prendere il risultato di una stringa esadecimalizzata, farne la getbytes e pretendere che l'hashing funzioni!!
    Ti va bene perché
    codice:
    "A".getBytes();
    ritorna un array di byte che rappresenta la il carattere A (che non è l'esadecimale A) nella codifica UTF-8.

    Quindi, ripartendo da capo, cosa rappresenta ALIAS?
    RTFM Read That F*** Manual!!!

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    36
    alis è una stringa costante che devo aggiungere all'operazioni di hashing quindi non è calcolata in precedenza. io mi limito semplicemente a prendere a due a due i caratteri di questa stringa e a calcolare il corrispettivo valore ascii. fino al carattere 7 l'hash funziona alla perfezione ma quando arriva all'ottavo ecco che l'hash non esce come dovrebbe.

    comunque sicuramente non ho letto queste regole perchè io sto facendo questo programma in java come se stessi usando il c++.

    la prova che ho fatto è stata questa:
    ho passato al messegedigest una string contenente il primo , poi i primi 2, i primi 3 ecc. caratteri della stringa alis e li ho confrontati con il mio programmino i VB. tutto funziona fino al 7 carattere...

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Ecco, prima di andare avanti ti consiglio di guardare bene la documentazione Java per la sicurezza, che non funziona esattamente come funziona in C++.

    Poi ti ripeto, parti da stringhe in UTF-8, non ASCII e questo potrebbe creare problemi
    RTFM Read That F*** Manual!!!

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    36
    Si probabilmente il problema è quello...potresti darmi qualche dritta su come usare una stringa ascii? non pretendo che mi spieghi tutto, ti chiedo solo un punto da cui iniziare! grazie comunque per la risposta

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    come ti ho detto tu lavori in UTF-8 non in ASCII.
    In java, in linea generale, "A".getBytes() dovrebbe tornare il valore 41, che è totalmente diverso dal valore 10 rappresentato dal carattere esadecimale A!!.
    Oltretutto se ti trovi in una piattaforma IBM, "A".getBytes() ritorna il valore in codifica IBM, che 99.99 volte su 100 è diverso dal tuo ASCII e ti invalida i conti.

    La prima cosa che devi fare è trasformare correttamente la tua intera stringa in byte, quello è l'input della tua funzione di hash.

    Poi se dai al motore java in pasto 2 byte (o quelli che tu credi siano Non funziona (in java) fai

    1. input + 2 byte --> hash
    2. hash + 2 byte --> hash

    e continui il 2 finché non hai finito alias.

    Non so come fai in visual basic, ma vedo grossi problemi alla base di quello che provi a fare (e fidati, non sono concetti che digerisci in 2 minuti leggendo un post)
    RTFM Read That F*** Manual!!!

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 © 2026 vBulletin Solutions, Inc. All rights reserved.