Avatar billede jhh Nybegynder
02. marts 2000 - 14:35 Der er 2 kommentarer

String -> MessageDigest -> String

Jeg prøver at gøre følgende:

===

// Make signature
String signature = "En eller anden vilkårlig streng";
         
// MD5 encode signature
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.update(signature.getBytes());
byte[] test = md5.digest();
signature = new String(test);
boolean isEqual = md5.isEqual(test, signature.getBytes());

===

Spørgsmålet er hvad jeg gør galt siden isEqual i langt de flest tilfælde er false?

/Jesper
Avatar billede gnarf Nybegynder
02. marts 2000 - 15:11 #1
I langt de fleste tilfælde? Afhænger det af hvad der i din vilkårlige streng eller hvad???

Umiddelbart ser det jo fornuftigt nok ud. Jeg kan kun se det kan gå galt i din "signature = new String(test);"
da det faktisk er den tildeling du ender med at lave sammenligning på.

Der står noget om padding i digest funktionen, og uden at vide en masse om det, så kunne man forestille sig at denne padding kommer med tilbage i en "new String" operation.

Det er dog næsten det rene gætteri.
Avatar billede jhh Nybegynder
02. marts 2000 - 15:24 #2
OK, her er hvad jeg selv har fundet ud af:

Resultatet afhænger af hvad der står i strengen fx. "aaa" giver true, men "En eller anden vilkårlig streng" giver false.

Som du siger ser det ud til, at det er "signature = new String(test);" der laver ulykker.

MessageDigest returnerer "extended chars", så jeg kunne forestille mig at det er karaktersættet der giver problemer ved konvertering fra byte Array til String.

Jeg ved man kan specificerer karaktersættet ved init af strengen fx. "signature = new String(test, "Cp850")" men det ser heller ikke ud til at virke, og jeg aner ikke hvilket karaktersæt jeg i givet fald skulle bruge.

/Jesper
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester