Araho Skrevet 28. november 2011 Del Skrevet 28. november 2011 Hei! Jeg pusler så smått med en liten android-app, og sliter litt med kryptering av et tall. Jeg henter ut data fra en database ved å laste ned en webside (via HttpPost) og parse resultatet. Det går fint, men for å sikre at det kun er appen som får åpnet websiden og hentet ut info fra databasen krever jeg at det blant postverdiene ligger en egen nøkkel. Denne nøkkelen har jeg laget ved å bruke SHA1-kryptering. Problemet er at jeg får ut feil streng når jeg krypterer. Jeg har dobbeltsjekket opp mot en SHA1-generator på nett, og der blir SHA1(2) = da4b9237bacccdf19c0760cab7aec4a8359010b0 I min generator på android får jeg ut SHA1(2) = da4b9237bacccdf19c760cab7aec4a8359010b0 Det mangler altså en 0 som den 19. bokstaven. I php-koden jeg benytter på serveren fungerer alt strålende. Java-koden ser slik ut: public String md5(String s) { try { // Create MD5 Hash MessageDigest digest = java.security.MessageDigest.getInstance("SHA1"); digest.update(s.getBytes()); byte messageDigest[] = digest.digest(); // Create Hex String StringBuffer hexString = new StringBuffer(); for (int i=0; i<messageDigest.length; i++) hexString.append(Integer.toHexString(0xFF & messageDigest[i])); return hexString.toString(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return ""; Er det noen som har peiling på hva som gjør dette og hvordan det kan fikses? Lenke til kommentar
Kiff Skrevet 28. november 2011 Del Skrevet 28. november 2011 Jeg tror det er byte<->hex<->String konverteringen din som er feil uten at jeg helt ser hvor. Denne implementasjonen ga rett svar: http://stackoverflow.com/questions/1515489/java-compute-sha-1/1515746#1515746 Lenke til kommentar
Araho Skrevet 28. november 2011 Forfatter Del Skrevet 28. november 2011 Takk, det fungerte Lenke til kommentar
HV Skrevet 29. november 2011 Del Skrevet 29. november 2011 Hei! Jeg pusler så smått med en liten android-app, og sliter litt med kryptering av et tall. Jeg henter ut data fra en database ved å laste ned en webside (via HttpPost) og parse resultatet. Det går fint, men for å sikre at det kun er appen som får åpnet websiden og hentet ut info fra databasen krever jeg at det blant postverdiene ligger en egen nøkkel. Denne nøkkelen har jeg laget ved å bruke SHA1-kryptering. Problemet er at jeg får ut feil streng når jeg krypterer. Jeg har dobbeltsjekket opp mot en SHA1-generator på nett, og der blir SHA1(2) = da4b9237bacccdf19c0760cab7aec4a8359010b0 I min generator på android får jeg ut SHA1(2) = da4b9237bacccdf19c760cab7aec4a8359010b0 Det mangler altså en 0 som den 19. bokstaven. I php-koden jeg benytter på serveren fungerer alt strålende. Java-koden ser slik ut: public String md5(String s) { try { // Create MD5 Hash MessageDigest digest = java.security.MessageDigest.getInstance("SHA1"); digest.update(s.getBytes()); byte messageDigest[] = digest.digest(); // Create Hex String StringBuffer hexString = new StringBuffer(); for (int i=0; i<messageDigest.length; i++) hexString.append(Integer.toHexString(0xFF & messageDigest[i])); return hexString.toString(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return ""; Er det noen som har peiling på hva som gjør dette og hvordan det kan fikses? hexString.append(Integer.toHexString(0xFF & messageDigest[i])); kan byttes til: hexString.append(Integer.toString((messageDigest[i] & 0xff) + 0x100, 16).substring(1)); Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå