Kryptografia wizualna jest obszarem kryptografii, który koncentruje się na kodowaniu i dekodowaniu informacji wizualnej. W przeciwieństwie do tradycyjnych metod kryptografii, które opierają się na przekształceniach matematycznych, kryptografia wizualna wykorzystuje obrazy, aby ukryć i przekazać tajne informacje. Technika ta pozwala na podzielenie obrazu na kilka warstw (tzw. udziałów), które indywidualnie nie ujawniają żadnych informacji, ale po ich odpowiednim połączeniu odtwarzają oryginalny obraz. Jednym z najprostszych przykładów kryptografii wizualnej jest schemat 2-out-of-2. Oryginalny obraz jest podzielony na dwa udziały. Oba udziały wyglądają jak losowe szumy, ale nałożone na siebie tworzą czytelny obraz. Dzięki temu, nawet jeśli jeden udział zostanie przechwycony, bez drugiego nie można odtworzyć oryginalnej informacji.
Wykorzystana przez nas metoda kryptografii wizualnej polega na podziale obrazka na dwa, częściowo losowe, nieczytelne obrazy, które po odpowiednim nałożeniu na siebie, odtwarzają oryginalny obraz. Ta technika, zwykle stosowana do obrazów binarnych (czerń i biel), została tutaj rozszerzona na kolorowe zdjęcia, zwiększając tym samym pulę obrazów możliwych do zakodowania. Nasz projekt wykorzystuje paletę kolorów RGB oraz schemat kryptograficzny (2, 2), który wymaga obu części do odszyfrowania obrazu.
Wykorzystana przez nas metoda bazuje na tej opisanej w
Color Visual Cryptography with Completely Randomly Coded Colors, Arkadiusz Orłowski & Leszek J. Chmielewski[1]
git clone https://github.com/AdamRopelewski/VisualCryptographyForColorImages.git
cd VisualCryptographyForColorImages
pip install -r requirements.txtPo zainstalowaniu wymaganych modułów uruchom program gui.py przy użyciu pythona.
python gui.py- Zaznacz opcje "Encode" naciśnij przycisk "Start".
- Następnie wskaż plik wejściowy i zatwierdź.
- Po zakończeniu wyświeli się komunikat o czasie trwania.
- Użyj przycisku "Open output folder", aby otworzyć folder z plikami wynikowymi.
- Zaznacz opcje "Decode" naciśnij przycisk "Start".
- Następnie wskaż dwa pliki wejściowowe (uzyskane w kroku Encode) i zatwierdź.
- Po zakończeniu wyświeli się komunikat o czasie trwania.
- Użyj przycisku "Open output folder", aby otworzyć folder z plikami wynikowymi.
| Obraz wejściowy - Mandryl | |
|---|---|
![]() |
| Zmniejszona przestrzeń kolorów (dithering) | Piksele otworzone z płytek RGB (rozdzielczość 9 razy większa) |
|---|---|
![]() |
![]() |
| Zakodowany obraz nr. 1 | Zakodowany obraz nr. 2 |
|---|---|
![]() |
![]() |
| Zdekodowany obraz | Zdekodowany obraz po próbie odtworzenia kolorów |
|---|---|
![]() |
![]() |
| Szyfrowanie przy użyciu AND. Deszyfracja przy użyciu OR | |
|---|---|
| Zdekodowany obraz | Zdekodowany obraz po próbie odtworzenia kolorów |
![]() |
![]() |
| Obraz wejściowy - Zdjęcie satelitarne | |
|---|---|
![]() |
| Zmniejszona przestrzeń kolorów (dithering) | Piksele otworzone z płytek RGB (rozdzielczość 9 razy większa) |
|---|---|
![]() |
![]() |
| Zakodowany obraz nr. 1 | Zakodowany obraz nr. 2 |
|---|---|
![]() |
![]() |
| Zdekodowany obraz | Zdekodowany obraz po próbie odtworzenia kolorów |
|---|---|
![]() |
![]() |
| Obraz wejściowy - Zdjęcie z napisem | |
|---|---|
![]() |
| Zmniejszona przestrzeń kolorów (dithering) | Piksele otworzone z płytek RGB (rozdzielczość 9 razy większa) |
|---|---|
![]() |
![]() |
| Zakodowany obraz nr. 1 | Zakodowany obraz nr. 2 |
|---|---|
![]() |
![]() |
| Zdekodowany obraz | Zdekodowany obraz po próbie odtworzenia kolorów |
|---|---|
![]() |
![]() |
- Adam Ropelewski
- Dawid Maliszewski
- Sebastian Matejak
-
Adam Ropelewski:
- Interfejs graficzny użytkownika.
- Nie wykorzystana metoda z użyciem HSV zamiast RGB.
- Krok nr. 6 poprawiający kolory obrazka. Przywraca on orginalną rozdzielczość.
- Refaktoryzacja kodu main.py na potrzeby GUI.
- Plik README, z instrukcją obsługi.
-
Dawid Maliszewski:
- Ostatecznie użyty algorytm wykorzysujący XOR do szyfrowania oraz AND do deszyfracji.
- Przystosowanie GUI do systemu macOS.
- Krok nr. 2 - dithering obrazka do przestrzeni 10 kolorów.
- Krok nr. 3 - zapisanie każdego z 10 kolorów za pomocą 9 pikseli składających się z RGB.
-
Sebastian Matejak:
- Pierwsza metoda oparta na szyfrowaniu przy użyciu logicznego AND i deszyfrowaniu przy uzyciu OR (folder obsolete).
- Research.
- Odtworzenie metody dla szyfrowania obrazów binarnych będącej punktem startowym.






















