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:
alis = "64C6DDE3E579B6D986968D3445D23B15CAAF128402AC56000 5CE2075913FDCE8"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); }
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!

Rispondi quotando