"Allan Olsen" <sandrasmurf@hotmail.com> skrev i en meddelelse
news:avestr$ht6$1@eising.k-net.dk...
> Hejsa
> Jeg er ved at lave et fil krypteringsprogram, der benytter AES algoritmen.
> Jeg er bare stødt på et problem ved implementeringen af en del af
> algoritmen.
>
> Det drejer sig hovedsageligt om, hvordan man kan overbevise java om, at
den
> ikke
> skal lade sine ASCII bytes gå fra -127 til 128.
Den eneste primitive datatype som er unsigned i Java, er char, men den er på
16 bit. Hvis du vil arbejde med en primitiv datatype, som kan håndtere
intervallet [0,256], så kan du ikke bruge byte. Er det vigtigt for dig,
hvordan en byte bliver vist på skræmen? Det ændrer jo ikke hvordan tallet
bliver representeret i bit.
En anden ting du evt. skal være opmærksom på, hvis du vælger at bruge byte
til at representere dine værdier, er at resultatet af aritmetiske
operationer som fx. +,-,*,/ altid er mindst en int.
> Så spørgsmålet er:
> Hvordan dælen kan jeg smart omgå, at min transformationsmatrix benytter
> ascii hex værdier
> fra 0 til ff og java benytter -127 til 128.
>
> Håber nogen har nogle gode ideer.
Hvad med at bruge en datatype som ikke løber ind i fortegnsproblemerne. Fx.
int. Så er du heller ikke nødt til at caste hvis du skal lave aritmetiske
operationer. Du skal dog så være opmærksom på overløb. Hvis du vil have alle
de tegn med som der kan være i en Java String variable, er du alligevel nødt
til at bruge noget andet end byte, nemlig minimum en char.
> ps. Hvor kan man finde en liste over javas ASCII nummerering.
Java gemmer en String som Unicode tegn, dvs. 16 bit pr. tegn. Det er også
derfor at char typen er på 16 bit.
ASCII er dog en standard, som rent faktisk kun er på 7 bit. Så hvis de
højeste 9 bit er 0, er de resterende 7 bit ens for ASCII og Javas
representation af et tegn. Den tabel du henviser til i din post viser
faktisk kun de 7 bit ASCII værdier, så hvis du kan nøjes med disse værdier
løber du ikke ind i problemer med fortegn. Det er først når du vil til at
representere 8 bit værdier som fx. ISO-8859-1 at du løber ind i dine
problemer. Se fx.
http://www.linuxvalley.it/encyclopedia/ldp/manpage/man7/iso_8859_1.7.php
/Anders