Konvertering mellan byte och Base64

Permalänk
Medlem

Konvertering mellan byte och Base64

Håller på att skapa ett inloggningssystem för ett skolprojekt. Det jag hade tänkt använda för att hasha lösenord är SHA512. Det jag dock kom att fundera på är varför hashen blir just 88 karaktärer lång.

Googlat runt nu en lång stund, och den förklaring jag hittar på hur det fungerar är att vid konvertering till base64, är varje karaktär 6 bitar. Det är just den biten jag fastnar på.. Borde inte en 512 bitar lång hash då bli ~85,3 tecken, och inte 88?

Permalänk
Glömsk

Med base64 så blir 3 byte indata 4 tecken utdata. En base64-kodad har alltså alltid en längd som är en multipel av 4. Är den kortare så "paddas" den (ofta med "="-tecknet).

Så. 88 är jämt delbart med 4. 84 är jämt delbart med 4. 85.333 paddas alltså uppåt till 88 tecken.

(Noter att förklaringen ovan är något förenklad, många base64-implementationer behöver exempelvis inte paddningen utan listar ut själv, exempelvis).

Visa signatur

...man is not free unless government is limited. There's a clear cause and effect here that is as neat and predictable as a law of physics: As government expands, liberty contracts.

Permalänk
Medlem

Tja den bör vara 86 lång men jag är inte så insatt just SHA* serien då jag övergav den för många år sedan.

Men lite oftopic men måste ändå klistra in det medan du arbetar med detta rekommenderar jag denna läsning: http://codahale.com/how-to-safely-store-a-password/

Visa signatur

Speldator: Ryzen 7800X3D, 64GB DDR5, RTX 3070
Server: i7-8700k, 32GB DDR4, RTX2080
Steam deck + de fiesta konsoller.

Permalänk
Medlem
Skrivet av MugiMugi:

Men lite oftopic men måste ändå klistra in det medan du arbetar med detta rekommenderar jag denna läsning: http://codahale.com/how-to-safely-store-a-password/

Läste den där artikeln igår också. Grejen är att det som sagt bara ska va till ett litet skolprojekt, och alltså aldrig ha några egentliga användare, så känner inte att det är värt att hålla på med bcrypt.