Kodning kontra kryptering kontra hashing
Dra tydliga gränser mellan dessa tre begrepp och förstå när vart och ett ska användas.
Kodning kontra kryptering kontra hashing är en gratis lektion i Cryptology Academy på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Cryptology Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Cryptology Academy innehåller totalt 4 lektioner.
Tre olika operationer
Kodning, kryptering och hashning är tre fundamentalt olika operationer med olika syften. De blandas ofta ihop, men det är viktigt att förstå skillnaden när säkra system utformas.
Kodning omvandlar dataformat utan att ge någon säkerhet. Kryptering skyddar konfidentialiteten. Hashning producerar ett hashvärde med fast längd för integritetsverifiering.
Kodning: formatomvandling
Kodning omvandlar data från ett format till ett annat för kompatibilitet eller överföring. Den kan alltid återställas och kräver ingen nyckel. Alla som känner till kodningsschemat kan avkoda data.
Exempel är Base64 (binärt till ASCII), URL-kodning (%20 för blanksteg), HTML-entiteter (& för &) och hexkodning. Målet är kompatibilitet, inte säkerhet.
Kryptering: konfidentialitet med en nyckel
Kryptering omvandlar klartext till chiffertext med hjälp av en nyckel. Operationen kan bara återställas av någon som har rätt nyckel. Utan nyckeln är det beräkningsmässigt ogenomförbart att dekryptera chiffertexten.
Krypteringsalgoritmer omfattar AES (symmetrisk), RSA (asymmetrisk) och ChaCha20. Det är nyckeln som ger säkerhet. Själva algoritmen är offentligt känd.
Hashning: envägshashvärden med fast längd
En kryptografisk hashfunktion tar emot indata med godtycklig längd och producerar utdata med fast längd (digesten eller hashvärdet). Funktionen är deterministisk (samma indata ger alltid samma utdata) men kan inte inverteras med avsikt.
SHA-256 producerar alltid utdata på 256 bitar, oavsett om indatan är 1 byte eller 1 gigabyte. Hashfunktioner används för integritetskontroller, lösenordslagring och digitala signaturer.
Base64 är INTE kryptering
Ett kritiskt och vanligt misstag är att tro att Base64-kodade data är krypterade. För att avkoda Base64 krävs bara kunskap om att det är Base64, vilket ofta är uppenbart utifrån utfyllnaden "==" eller teckenuppsättningen.
Om ni kodar ett lösenord som "cGFzc3dvcmQ=" (Base64 för "password") kan en angripare avkoda det på några sekunder. Base64 i ett säkerhetssammanhang är endast användbart för kompatibilitet vid överföring, aldrig för att dölja data.
MD5 av ett lösenord är hashning, inte kryptering
Hashning av ett lösenord med MD5 lagrar det som ett envägshashvärde. Det går inte att "dekryptera" ett MD5-hashvärde för att återfå lösenordet. MD5 är dock inte lämpligt för lösenordshashning eftersom det är för snabbt.
Angripare kan beräkna miljarder MD5-hashvärden per sekund med hjälp av GPU:er, vilket gör brute-force- och rainbow table-attacker praktiskt genomförbara. Lösenordslagring kräver långsamma, minneshårda funktioner som bcrypt, scrypt eller Argon2.
AES-GCM är autentiserad kryptering
AES-GCM (Galois/Counter Mode) tillhandahåller både konfidentialitet (kryptering) och integritet (autentisering). Det använder AES i räknarläge för kryptering och GHASH för autentisering.
Autentiseringstaggen som produceras av AES-GCM upptäcker all manipulering av chiffertexten. Det gör AES-GCM till ett Authenticated Encryption with Associated Data-schema (AEAD), den gyllene standarden för modern kryptering.
SHA-256 är en hashfunktion
SHA-256 (Secure Hash Algorithm 256-bit) är en kryptografisk hashfunktion som standardiserats av NIST. Den producerar en digest på 256 bitar och anses vara säker mot alla kända attacker, inklusive kollisions- och preimage-attacker.
SHA-256 används i TLS-certifikat, vid Bitcoin-mining (proof-of-work), för HMAC-meddelandeautentisering och i digitala signaturscheman som RSA-SHA256 och ECDSA.
Vanliga misstag bland utvecklare
Vanliga säkerhetsmisstag som beror på att dessa tre blandas ihop är att lagra lösenord krypterade i stället för hashade (krypteringsnyckeln blir då den verkliga sårbarheten), att använda kodning i stället för kryptering för känsliga data, att använda snabba hashfunktioner (MD5, SHA-1) för lösenordslagring och att anta att något måste vara säkert bara för att det är Base64.
Ett annat misstag är att använda samma funktion för flera ändamål, till exempel att använda en hashfunktion som MAC utan HMAC-konstruktionen, vilket är sårbart för length extension-attacker.
När respektive metod ska användas
Använd kodning när binära data behöver överföras via ett textprotokoll, byte behöver lagras i ett textfält eller data behöver bäddas in i en URL. Använd hashning för att lagra lösenord (med bcrypt/Argon2), verifiera dataintegritet (kontrollsummor) och härleda identifierare med fast längd från data med varierande längd.
Använd kryptering när känsliga data behöver lagras eller överföras och måste kunna återställas med rätt nyckel. Kombinera hashning och kryptering (AEAD) för både integritet och konfidentialitet under överföring.
Att kombinera alla tre i praktiken
Ett väl utformat autentiseringssystem använder alla tre: lösenord hashas med Argon2 (hashning), hashvärdet lagras i ett databasfält med AES-256-kolumnkryptering (kryptering) och API-tokenen som returneras efter inloggning Base64url-kodas (kodning).
Varje operation har ett eget syfte. Att känna igen vilken operation som passar för vilket användningsfall är en grundläggande färdighet inom tillämpad kryptografi och säker systemdesign.
Quiz: kodning, kryptering och hashning
Testa era kunskaper om kodning, kryptering och hashning.
Viktigaste punkterna: kodning kontra kryptering kontra hashning
Kodning (Base64, hex) är en formatomvandling utan säkerhet. Kryptering (AES-GCM) ger återställbar konfidentialitet och kräver en nyckel. Hashning (SHA-256, Argon2) producerar irreversibla hashvärden med fast längd.
Använd aldrig kodning för säkerhet. Använd långsamma hashfunktioner (Argon2/bcrypt) för lösenord. Använd autentiserad kryptering (AEAD) för känsliga data under överföring eller vid lagring. Att blanda ihop dessa kategorier är en av de vanligaste orsakerna till säkerhetssårbarheter.
Lär dig Cryptology Academy med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 67
- Lektioner
- 261
Vanliga frågor
Är lektionen ”Kodning kontra kryptering kontra hashing” gratis?
Ja – hela texten till ”Kodning kontra kryptering kontra hashing” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Cryptology Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Cryptology Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Kodning kontra kryptering kontra hashing”?
Dra tydliga gränser mellan dessa tre begrepp och förstå när vart och ett ska användas. Ni övar på Cryptology Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Cryptology Academy?
Du behöver inga förkunskaper. Utbildningen i Cryptology Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.
Hur lång tid tar lektionen ”Kodning kontra kryptering kontra hashing”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Cryptology Academy-lektionen?
Ja. Varje Cryptology Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Base64-kodning: så fungerar den
- ASCII, Unicode och textrepresentation
- Hexadecimal visning av kryptografiska resultat
- Kodning kontra kryptering kontra hashing