Gå til innhold

[Løst] Krypteringstrøbbel i Android


Anbefalte innlegg

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
Videoannonse
Annonse

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...