0Pricing
Cryptology Academy · Lekcja

Kodowanie a szyfrowanie i haszowanie

Wyraźnie rozróżnią Państwo te trzy pojęcia i zrozumieją, kiedy należy używać każdego z nich.

Kodowanie a szyfrowanie i haszowanie to bezpłatna lekcja Cryptology Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cryptology Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Trzy różne operacje

Kodowanie, szyfrowanie i haszowanie to trzy zasadniczo różne operacje, służące różnym celom. Często się je myli, ale zrozumienie różnic jest niezbędne do projektowania bezpiecznych systemów.

Kodowanie zmienia format danych bez zapewniania bezpieczeństwa. Szyfrowanie chroni poufność. Haszowanie generuje skrót o stałej długości do weryfikacji integralności.

Kodowanie: transformacja formatu

Kodowanie konwertuje dane z jednego formatu na inny w celu zapewnienia zgodności lub umożliwienia transmisji. Zawsze można je odwrócić i nie wymaga ono klucza. Każdy, kto zna schemat kodowania, może zdekodować dane.

Przykłady obejmują Base64 (z binarnego na ASCII), kodowanie URL (%20 oznacza spację), encje HTML (& oznacza &) oraz kodowanie szesnastkowe. Celem jest zgodność, a nie bezpieczeństwo.

Szyfrowanie: poufność z użyciem klucza

Szyfrowanie przekształca tekst jawny w szyfrogram z użyciem klucza. Operację może odwrócić tylko osoba mająca właściwy klucz. Bez klucza odszyfrowanie szyfrogramu jest obliczeniowo niewykonalne.

Algorytmy szyfrowania obejmują AES (symetryczny), RSA (asymetryczny) i ChaCha20. To klucz zapewnia bezpieczeństwo. Sam algorytm jest publicznie znany.

Haszowanie: jednokierunkowe skróty o stałej długości

Kryptograficzna funkcja skrótu przyjmuje dane wejściowe o dowolnej długości i generuje wynik o stałej długości (skrót lub hash). Funkcja jest deterministyczna (te same dane wejściowe zawsze dają ten sam wynik), ale z założenia nieodwracalna.

SHA-256 zawsze generuje wynik o długości 256 bitów, niezależnie od tego, czy dane wejściowe mają 1 bajt, czy 1 gigabajt. Funkcji skrótu używa się do sprawdzania integralności, przechowywania haseł i podpisów cyfrowych.

Base64 NIE jest szyfrowaniem

To krytyczny i często popełniany błąd: dane zakodowane w Base64 NIE są zaszyfrowane. Do zdekodowania Base64 wystarczy wiedzieć, że jest to Base64, co często jest oczywiste na podstawie dopełnienia "==" lub zestawu znaków.

Jeśli zakodują Państwo hasło jako "cGFzc3dvcmQ=" (Base64 dla "password"), atakujący może zdekodować je w kilka sekund. Base64 w kontekście bezpieczeństwa służy wyłącznie zgodności podczas transmisji, a nigdy do ukrywania danych.

MD5 hasła to hash, nie szyfrowanie

Haszowanie hasła za pomocą MD5 przechowuje je w postaci jednokierunkowego skrótu. Nie można "odszyfrować" hasha MD5, aby odzyskać hasło. MD5 nie jest jednak odpowiednią funkcją haszującą do haseł, ponieważ działa zbyt szybko.

Atakujący mogą obliczać miliardy hashy MD5 na sekundę za pomocą procesorów GPU, dzięki czemu ataki siłowe i ataki z użyciem tablic tęczowych stają się praktyczne. Przechowywanie haseł wymaga wolnych funkcji wymagających dużej ilości pamięci, takich jak bcrypt, scrypt lub Argon2.

AES-GCM to szyfrowanie uwierzytelnione

AES-GCM (tryb Galois/Counter) zapewnia zarówno poufność (szyfrowanie), jak i integralność (uwierzytelnianie). Wykorzystuje AES w trybie licznika do szyfrowania oraz GHASH do uwierzytelniania.

Tag uwierzytelniający generowany przez AES-GCM wykrywa wszelkie modyfikacje szyfrogramu. Dzięki temu jest to schemat uwierzytelnionego szyfrowania z powiązanymi danymi (AEAD), stanowiący złoty standard współczesnego szyfrowania.

SHA-256 to funkcja skrótu

SHA-256 (Secure Hash Algorithm 256-bit) to kryptograficzna funkcja skrótu standaryzowana przez NIST. Generuje skrót 256-bitowy i jest uznawana za bezpieczną wobec wszystkich znanych ataków, w tym ataków kolizyjnych i ataków typu preimage.

SHA-256 jest używany w certyfikatach TLS, wydobywaniu Bitcoinów (proof-of-work), uwierzytelnianiu wiadomości HMAC oraz schematach podpisu cyfrowego, takich jak RSA-SHA256 i ECDSA.

Typowe błędy programistów

Typowe błędy bezpieczeństwa wynikające z mylenia tych trzech pojęć to: przechowywanie haseł w postaci zaszyfrowanej zamiast hashowanej (klucz szyfrowania staje się rzeczywistym słabym punktem), używanie kodowania zamiast szyfrowania dla danych wrażliwych, używanie szybkich funkcji skrótu (MD5, SHA-1) do przechowywania haseł oraz zakładanie, że coś musi być bezpieczne tylko dlatego, że jest zapisane w Base64.

Innym błędem jest używanie tej samej funkcji do wielu celów, na przykład używanie funkcji skrótu jako MAC bez konstrukcji HMAC, co naraża system na ataki length extension.

Kiedy używać poszczególnych operacji

Kodowania należy używać, gdy trzeba przesyłać dane binarne za pomocą protokołu tekstowego, przechowywać bajty w polu tekstowym lub osadzać dane w adresie URL. Haszowania należy używać do przechowywania haseł (z bcrypt/Argon2), weryfikowania integralności danych (sumy kontrolne) oraz wyprowadzania identyfikatorów o stałej długości z danych o zmiennej długości.

Szyfrowania należy używać, gdy trzeba przechowywać lub przesyłać dane wrażliwe, które muszą być możliwe do odzyskania przy użyciu właściwego klucza. Należy łączyć haszowanie i szyfrowanie (AEAD), aby zapewnić zarówno integralność, jak i poufność podczas przesyłania.

Praktyczne połączenie wszystkich trzech operacji

Dobrze zaprojektowany system uwierzytelniania wykorzystuje wszystkie trzy operacje: hasła są haszowane za pomocą Argon2 (haszowanie), hash jest przechowywany w polu bazy danych z szyfrowaniem kolumn AES-256 (szyfrowanie), a token API zwracany po zalogowaniu jest kodowany w formacie Base64url (kodowanie).

Każda operacja służy odrębnemu celowi. Rozpoznanie, która operacja jest odpowiednia w danym przypadku użycia, to podstawowa umiejętność w kryptografii stosowanej i projektowaniu bezpiecznych systemów.

Quiz: kodowanie a szyfrowanie

Sprawdź swoje rozumienie kodowania, szyfrowania i haszowania.

Najważniejsze informacje: kodowanie a szyfrowanie i haszowanie

Kodowanie (Base64, zapis szesnastkowy) to transformacja formatu bez zapewniania bezpieczeństwa. Szyfrowanie (AES-GCM) zapewnia odwracalną poufność wymagającą klucza. Haszowanie (SHA-256, Argon2) generuje nieodwracalne skróty o stałej długości.

Nigdy nie należy używać kodowania do celów bezpieczeństwa. Do haseł należy stosować wolne funkcje skrótu (Argon2/bcrypt). W przypadku danych wrażliwych przesyłanych lub przechowywanych należy stosować uwierzytelnione szyfrowanie (AEAD). Mylenie tych kategorii jest jednym z najczęstszych źródeł luk w zabezpieczeniach.

Często zadawane pytania

Czy lekcja „Kodowanie a szyfrowanie i haszowanie” jest bezpłatna?

Tak — pełny tekst „Kodowanie a szyfrowanie i haszowanie” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cryptology Academy, przejdź na CoddyKit PRO. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Kodowanie a szyfrowanie i haszowanie”?

Wyraźnie rozróżnią Państwo te trzy pojęcia i zrozumieją, kiedy należy używać każdego z nich. Ćwiczysz Cryptology Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Cryptology Academy?

Nie wymagamy żadnego doświadczenia. Cryptology Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Kodowanie a szyfrowanie i haszowanie”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Cryptology Academy?

Tak. Każda lekcja Cryptology Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Kodowanie Base64: jak działa
  2. ASCII, Unicode i reprezentacja tekstu
  3. System szesnastkowy w wynikach kryptograficznych
  4. Kodowanie a szyfrowanie i haszowanie
← Powrót do Cryptology Academy