Złam ten kod z Pythonem. Jak tworzyć, testować i łamać szyfry
- Autor:
- Al Sweigart
- Wydawnictwo:
- Helion
- Wydawnictwo:
- Helion
- Ocena:
- 6.0/6 Opinie: 1
- Stron:
- 472
- Druk:
- oprawa miękka
- Dostępne formaty:
-
PDFePubMobi
![Wyłącznie](https://static01.helion.com.pl/ebookpoint/img/img_wylacznie.png)
Opis ebooka: Złam ten kod z Pythonem. Jak tworzyć, testować i łamać szyfry
Szyfrowanie do niedawna było wiązane z bezpieczeństwem publicznym. Najbezpieczniejsze implementacje podlegały takim samym rządowym regulacjom jak przemysł zbrojeniowy. Do dzisiaj rządy i różnego rodzaju służby dążą do uzyskania możliwości odczytywania zaszyfrowanych danych. Tymczasem silna kryptografia jest podstawą globalnej ekonomii, zapewnia codzienną ochronę milionom użytkowników i większości organizacji. A to nie wszystko. Algorytmy szyfrujące, ich implementacja czy programowe łamanie szyfrów to równocześnie fascynująca dziedzina wiedzy i pole do zabawy, ćwiczeń oraz eksperymentowania z programowaniem.
Ta książka jest przeznaczona dla osób, które nie umieją programować, ale chciałyby zapoznać się z kryptografią. Omówiono tu podstawowe koncepcje programowania w Pythonie, który dziś jest uważany za najlepszy język dla początkujących koderów. Pokazano, jak tworzyć, testować i łamać programy implementujące szyfry klasyczne, takie jak przestawieniowy i Vigenere'a, by stopniowo przejść do znacznie bardziej zaawansowanych zagadnień, w tym kryptografii klucza publicznego. Każdy program przedstawiono w postaci pełnego kodu źródłowego, wyjaśniono także wiersz po wierszu jego działanie. Dzięki tej książce można się zarówno nauczyć zasad kryptografii, jak i zdobyć umiejętności pisania kodu szyfrującego i deszyfrującego w Pythonie.
Znajdziesz tutaj między innymi:
- wprowadzenie do programowania w Pythonie: pętle, zmienne, kontrola przepływu działania programu
- omówienie technik szyfrowania stosowanych przed wynalezieniem komputerów
- różne algorytmy szyfrowania z wykorzystaniem Pythona
- testowanie programów szyfrujących i deszyfrujących
- szyfrowanie i deszyfrowanie plików
- łamanie szyfrów techniką brute force czy analiza częstotliwości
A teraz stwórz algorytm szyfru idealnego!
Poznaj Pythona łamiąc szyfry
Obejmuje Pythona w wersji 3
Naucz się programować w Pythonie na podstawie tworzenia i łamania szyfrów - algorytmów przeznaczonych do przygotowywania i wysyłania tajnych wiadomości.
Po krótkim wprowadzeniu do podstaw programowania w Pythonie, dowiesz się, jak tworzyć, testować i łamać programy szyfrujące tekst z użyciem szyfrów klasycznych, takich jak przestawieniowy i Vigenere'a. Zaczniesz od prostych programów wykorzystujących szyfry odwrotny i Cezara, a następnie przejdziesz do znacznie bardziej zaawansowanych aż do kryptografii klucza publicznego. Ten rodzaj szyfrowania jest obecnie używany do zapewnienia bezpieczeństwa transakcjom w internecie, m.in. oferuje obsługę podpisu cyfrowego, szyfrowanie wiadomości e-mail i kryptowalut.
Każdy program jest przedstawiony w postaci pełnego kodu źródłowego, a także wyjaśnienia wiersz po wierszu sposobu jego działania. Zanim ukończysz lekturę książki, będziesz potrafił tworzyć kod szyfrujący w Pythonie, a także będziesz miał sprytnie działające programy przeznaczone do tego celu.
W książce zostało omówionych wiele zagadnień:
- wykorzystanie pętli, zmiennych i poleceń kontroli przepływu działania programu w rzeczywistych programach
- używanie plików słownik do natychmiastowego ustalenia, czy deszyfrowana wiadomość zawiera poprawny tekst w języku angielskim, czy też losowy zbiór liter
- tworzenie programów testowych pozwalających na upewnienie się o prawidłowym działaniu kodu przeznaczonego do szyfrowania i deszyfrowania wiadomości
- tworzenie programu (i jego złamanie) stosującego szyfr afiniczny, w którym arytmetyka modularna jest używana do szyfrowania wiadomości
- łamanie szyfrów za pomocą technik takich jak brute-force i analiza częstotliwości
Nie ma lepszego sposobu na poznanie programowania niż eksperymentowanie z rzeczywistymi programami. Dzięki tej książce nauka może być również przyjemnością.
![Czytelniczy kiermasz na koniec wakacji / Książki -40%, Ebooki -50%](https://static01.helion.com.pl/ebookpoint/img/promocje/bannery/19985/box_1180x419_SM_ebp_czytelniczy_kiermasz_na_koniec_wakacji_f597d2a57.jpg)
Wybrane bestsellery
-
Dzięki tej książce dowiesz się, jak pozyskiwać, analizować i wizualizować dane, a potem używać ich do rozwiązywania problemów biznesowych. Wystarczy, że znasz podstawy Pythona i matematyki na poziomie liceum, aby zacząć stosować naukę o danych w codziennej pracy. Znajdziesz tu szereg praktycznych...(41.40 zł najniższa cena z 30 dni)
41.40 zł
69.00 zł(-40%) -
Dzięki tej świetnie napisanej, miejscami przezabawnej książce dowiesz się, na czym naprawdę polega testowanie granic bezpieczeństwa fizycznego. To fascynująca relacja o sposobach wynajdywania niedoskonałości zabezpieczeń, stosowania socjotechnik i wykorzystywania słabych stron ludzkiej natury. Wy...(35.40 zł najniższa cena z 30 dni)
35.40 zł
59.00 zł(-40%) -
Ta książka wyjaśni Ci rolę matematyki w tworzeniu, renderowaniu i zmienianiu wirtualnych środowisk 3D, a ponadto pozwoli odkryć tajemnice najpopularniejszych dzisiaj silników gier. Za sprawą licznych praktycznych ćwiczeń zorientujesz się, co się kryje za rysowaniem linii i kształtów graficznych, ...(53.40 zł najniższa cena z 30 dni)
53.40 zł
89.00 zł(-40%) -
Oto zaktualizowane wydanie popularnego przewodnika, dzięki któremu skorzystasz z ponad dwustu sprawdzonych receptur bazujących na najnowszych wydaniach bibliotek Pythona. Wystarczy, że skopiujesz i dostosujesz kod do swoich potrzeb. Możesz też go uruchamiać i testować za pomocą przykładowego zbio...(53.40 zł najniższa cena z 30 dni)
53.40 zł
89.00 zł(-40%) -
Ta książka jest doskonałym wprowadzeniem do inżynierii społecznej. Omawia koncepcje psychologiczne leżące u podstaw tej dyscypliny i jej aspekty etyczne. Zaprezentowano tu narzędzie ułatwiające korzystanie z technik inżynierii społecznej w atakach socjotechnicznych. Następnie szczegółowo pokazano...(41.40 zł najniższa cena z 30 dni)
41.40 zł
69.00 zł(-40%) -
W sieci zabezpieczeń, które stworzyliśmy dla ochrony naszych danych, najsłabszym elementem jest zawsze czynnik ludzki. Hackerzy, zarówno etyczni, jak i nie, korzystają z wachlarza sztuczek opierających na „hackowaniu osobistym” i pozwalających przekonać innych do ujawnienia haseł, prz...(35.40 zł najniższa cena z 30 dni)
35.40 zł
59.00 zł(-40%) -
Już jako nastolatek swoimi umiejętnościami zastraszył całą Amerykę. Z czasem stał się najsłynniejszym hakerem świata i wrogiem publicznym numer jeden - okrzyknięty przez media groźnym cyberprzestępcą, gorliwie ścigany przez FBI, w końcu podstępem namierzony, osaczony i spektakularnie ujęty... Uzb...(32.94 zł najniższa cena z 30 dni)
32.94 zł
54.90 zł(-40%) -
Python to jeden z najpopularniejszych dynamicznych języków programowania. Nie od dziś znajduje on zastosowanie w różnych dziedzinach informatyki, zwłaszcza jako doskonały język skryptowy. Jeśli korzystasz z niego na co dzień i chcesz szybko wyszukiwać niezbędne informacje lub odświeżyć swoją wied...(8.49 zł najniższa cena z 30 dni)
8.49 zł
17.00 zł(-50%)
O autorze ebooka
Albert Sweigart — programista, projektant oprogramowania i nauczyciel kodowania. Autor licznych książek o Pythonie dla początkujących. Sweigart urodził się w Houston, w stanie Teksas, a obecnie mieszka w San Francisco. Prowadzi blog dostępny pod adresem: https://coffeeghost.net.
Al Sweigart - pozostałe książki
-
Dzięki tej książce zrozumiesz, że w rekurencji nie kryje się żadna magia. Dowiesz się, na czym polega jej działanie i kiedy warto zastosować algorytm rekursywny, a kiedy lepiej tego nie robić. Poznasz szereg klasycznych i mniej znanych algorytmów rekurencyjnych. Pracę z zawartym tu materiałem uła...(47.40 zł najniższa cena z 30 dni)
47.40 zł
79.00 zł(-40%) -
Tę książkę docenią ci, którzy opanowali już podstawową składnię Pythona i palą się do pisania własnych programów. Zawiera 81 projektów, które możesz napisać w tym języku. Programy składają się z maksymalnie 256 linii kodu i pozwolą Ci stopniowo nabierać umiejętności programisty - a zupełnie przy ...(47.40 zł najniższa cena z 30 dni)
47.40 zł
79.00 zł(-40%) -
Dzięki tej książce przyswoisz najlepsze zasady konfigurowania środowiska programistycznego i praktyki programistyczne poprawiające czytelność kodu. Znajdziesz tu mnóstwo przydatnych wskazówek dotyczących posługiwania się wierszem polecenia i takimi narzędziami jak formatery kodu, kontrolery typów...(53.40 zł najniższa cena z 30 dni)
53.40 zł
89.00 zł(-40%) -
Ta książka jest drugim wydaniem nietypowego podręcznika programowania w Pythonie. Dzięki niej nie zostaniesz mistrzem świata w kodowaniu, za to nauczysz się tworzyć programy, które oszczędzą Ci mnóstwo czasu i wysiłku. Nawet jeśli nigdy nie programowałeś, błyskawicznie opanujesz podstawy i zapozn...(65.40 zł najniższa cena z 30 dni)
65.40 zł
109.00 zł(-40%) -
Z książki Twórz własne gry komputerowe w Pythonie dowiesz się, jak tworzyć gry komputerowe w tym popularnym języku programowania. Nawet jeżeli jest to twoje pierwsze spotkanie z programowaniem. Zaczniesz od klasycznych gier, takich jak Szubienica, Zgadywanka Liczbowa oraz Kółko i K...(56.98 zł najniższa cena z 30 dni)
51.80 zł
74.00 zł(-30%) -
Jeśli nie masz pojęcia o programowaniu, ale chcesz wykorzystać komputer do automatyzacji prostych, powtarzalnych operacji, trzymasz w ręku właściwą książkę. Podstawy programowania przedstawiono tu w sposób klarowny i zrozumiały, poszczególne działania wyjaśniono krok po kroku, a propozycje prakty...(44.50 zł najniższa cena z 30 dni)
44.50 zł
89.00 zł(-50%) -
Scratch to najpopularniejszy język programowania dla dzieci. Korzystają z niego miliony osób na całym świecie. Jest łatwy w obsłudze, wystarczy przeciągać i upuszczać poszczególne bloki, dzięki czemu nawet najmłodsi adepci sztuki programowania szybko się w nim odnajdą. Książka Bawimy się, program...(53.13 zł najniższa cena z 30 dni)
48.30 zł
69.00 zł(-30%) -
Minecraft to bardzo popularna gra komputerowa, która na całym świecie sprzedała się w milionach egzemplarzy. Teraz możesz wykorzystać ją także do nauki programowania. W książce Kodowanie z Minecraftem znajdziesz instrukcje, dzięki którym napiszesz programy komputerowe, które pozwolą Ci zautomatyz...(53.13 zł najniższa cena z 30 dni)
48.30 zł
69.00 zł(-30%)
Zobacz pozostałe książki z serii
-
Rozwiązanie problemu znajdziesz w tej książce. Została ona napisana specjalnie z myślą o osobach, które administrują małymi sieciami, dysponują niewielkim budżetem i ograniczonym wsparciem profesjonalistów. Dzięki niej zrozumiesz podstawy zabezpieczania łączności sieciowej i poznasz sposoby zabez...(40.20 zł najniższa cena z 30 dni)
40.20 zł
67.00 zł(-40%) -
To trzecie, zaktualizowane i uzupełnione wydanie bestsellerowego podręcznika programowania w Pythonie. Naukę rozpoczniesz od podstawowych koncepcji programowania. Poznasz takie pojęcia jak zmienne, listy, klasy i pętle, a następnie utrwalisz je dzięki praktycznym ćwiczeniom. Dowiesz się, jak zape...(71.40 zł najniższa cena z 30 dni)
71.40 zł
119.00 zł(-40%) -
Ta książka stanowi przyspieszony kurs testowania bezpieczeństwa interfejsów API aplikacji internetowych. Dzięki niej przygotujesz się do testowania interfejsów, wyszukiwania błędów i zwiększania bezpieczeństwa własnoręcznie napisanych interfejsów. Dowiesz się, jak interfejsy REST API działają w ś...(53.40 zł najniższa cena z 30 dni)
53.40 zł
89.00 zł(-40%) -
Poznanie języka to jednak dopiero połowa sukcesu. Musisz też wiedzieć, jakie operacje w systemie wykonuje ten język. Do zbadania, jak działa kompilator i co dzieje się za kulisami, w książce tej wykorzystywana jest płytka rozwojowa Nucleo z niewielkim, tanim mikroukładem ARM. Dowiesz się, jak pra...(52.20 zł najniższa cena z 30 dni)
52.20 zł
87.00 zł(-40%) -
Wielu adeptów kodowania ulega złudnemu przekonaniu, że opanowanie jakiegoś języka programowania wystarczy, aby być programistą. Nader często w pośpiechu piszą nieuporządkowany kod, który zawiera mnóstwo powtórzeń i jest kompletnie nieczytelny. Tymczasem prawdziwi mistr...(35.40 zł najniższa cena z 30 dni)
35.40 zł
59.00 zł(-40%) -
Ta książka powstała z myślą o architektach oprogramowania, projektantach, programistach i dyrektorach do spraw technicznych. Zwięźle i przystępnie opisano w niej, jak zadbać o bezpieczeństwo na wczesnym etapie projektowania oprogramowania i jak zaangażować w ten proces cały team. Najpierw zapreze...(47.40 zł najniższa cena z 30 dni)
47.40 zł
79.00 zł(-40%) -
Ta książka jest kompleksowym i praktycznym przewodnikiem po hakowaniu aplikacji internetowych w ramach udziału w programach bug bounty. Znajdziesz w niej wszystkie niezbędne informacje, od budowania relacji z klientami i pisania znakomitych raportów o błędach w zabezpieczeniach po naukę zaawansow...(59.40 zł najniższa cena z 30 dni)
59.40 zł
99.00 zł(-40%) -
Przeczytasz o tym, jak wykrywać nowe luki w oprogramowaniu, jak tworzyć trojany i rootkity, a także jak używać techniki wstrzykiwania SQL. Zapoznasz się również z szeroką gamą narzędzi do przeprowadzania testów penetracyjnych (takich jak Metasploit Framework, mimikatz i BeEF), rozeznasz się w dzi...(53.40 zł najniższa cena z 30 dni)
53.40 zł
89.00 zł(-40%) -
Wykrywanie śladów niewłaściwego użycia dotyczy maszyn, które zarówno posłużyły do przeprowadzenia ataków, jak i były ich przedmiotem. Obecnie dostępnych jest wiele opracowań poświęconych sposobom działania na miejscu zdarzenia i analizie działających systemów Linux za pomocą poleceń dostępnych po...(77.40 zł najniższa cena z 30 dni)
77.40 zł
129.00 zł(-40%) -
Oto intuicyjny przewodnik dla średnio zaawansowanych programistów Pythona, pomyślany tak, by przyswajać zasady programowania zorientowanego obiektowo podczas praktycznych ćwiczeń. Dowiesz się, jakie problemy wiążą się z zastosowaniem podejścia proceduralnego i jak dzięki podejściu obiektowemu pis...(53.40 zł najniższa cena z 30 dni)
53.40 zł
89.00 zł(-40%)
Ebooka "Złam ten kod z Pythonem. Jak tworzyć, testować i łamać szyfry" przeczytasz na:
-
czytnikach Inkbook, Kindle, Pocketbook, Onyx Boox i innych
-
systemach Windows, MacOS i innych
-
systemach Windows, Android, iOS, HarmonyOS
-
na dowolnych urządzeniach i aplikacjach obsługujących formaty: PDF, EPub, Mobi
Masz pytania? Zajrzyj do zakładki Pomoc »
Audiobooka "Złam ten kod z Pythonem. Jak tworzyć, testować i łamać szyfry" posłuchasz:
-
w aplikacji Ebookpoint na Android, iOS, HarmonyOs
-
na systemach Windows, MacOS i innych
-
na dowolnych urządzeniach i aplikacjach obsługujących format MP3 (pliki spakowane w ZIP)
Masz pytania? Zajrzyj do zakładki Pomoc »
Kurs Video "Złam ten kod z Pythonem. Jak tworzyć, testować i łamać szyfry" zobaczysz:
-
w aplikacjach Ebookpoint i Videopoint na Android, iOS, HarmonyOs
-
na systemach Windows, MacOS i innych z dostępem do najnowszej wersji Twojej przeglądarki internetowej
Szczegóły ebooka
- Tytuł oryginału:
- Cracking Codes with Python: An Introduction to Building and Breaking Ciphers
- Tłumaczenie:
- Agnieszka Górczyńska
- ISBN Książki drukowanej:
- 978-83-283-7495-9, 9788328374959
- Data wydania książki drukowanej:
- 2021-06-08
- ISBN Ebooka:
- 978-83-283-7496-6, 9788328374966
- Data wydania ebooka:
-
2021-06-08
Data wydania ebooka często jest dniem wprowadzenia tytułu do sprzedaży i może nie być równoznaczna z datą wydania książki papierowej. Dodatkowe informacje możesz znaleźć w darmowym fragmencie. Jeśli masz wątpliwości skontaktuj się z nami sklep@ebookpoint.pl.
- Format:
- 170x230
- Numer z katalogu:
- 146034
- Rozmiar pliku Pdf:
- 4.8MB
- Rozmiar pliku ePub:
- 4.8MB
- Rozmiar pliku Mobi:
- 12.0MB
- Przykłady na ftp
Ebook zawiera materiały dodatkowe, które możesz pobrać z serwera FTP - link znajdziesz na stronie redakcyjnej.
Spis treści ebooka
- Kto powinien przeczytać tę książkę? 20
- Co znajdziesz w tej książce? 21
- Jak używać tej książki? 23
- Wpisywanie kodu źródłowego 23
- Sprawdzanie pod kątem błędów 23
- Konwencje zastosowane w książce 24
- Zasoby w internecie 24
- Pobieranie i instalowanie Pythona 24
- Instalacja Pythona w systemie Windows 24
- Instalacja Pythona w systemie macOS 25
- Instalacja Pythona w systemie Ubuntu 25
- Pobieranie pliku pyperclip.py 25
- Uruchamianie środowiska IDLE 26
- Podsumowanie 27
- Co to jest kryptografia? 30
- Kod a szyfr 30
- Szyfr Cezara 32
- Krążek szyfrowania 32
- Szyfrowanie wiadomości za pomocą krążka szyfrowania 33
- Deszyfrowanie za pomocą krążka szyfrowania 34
- Szyfrowanie i deszyfrowanie z użyciem arytmetyki 35
- Dlaczego podwójne szyfrowanie nie działa? 36
- Podsumowanie 36
- Kilka prostych wyrażeń matematycznych 40
- Wartości całkowite i wartości zmiennoprzecinkowe 41
- Wyrażenia 41
- Kolejność wykonywania działań 42
- Obliczanie wartości wyrażeń 42
- Przechowywanie wartości w zmiennych 43
- Nadpisywanie zmiennej 45
- Nazwy zmiennych 46
- Podsumowanie 47
- Praca z tekstem przy użyciu wartości w postaci ciągu tekstowego 50
- Konkatenacja ciągu tekstowego za pomocą operatora + 51
- Replikacja ciągu tekstowego przy użyciu operatora * 52
- Pobieranie znaków z ciągu tekstowego przy użyciu indeksów 53
- Wyświetlanie wartości za pomocą funkcji print() 56
- Wyświetlanie znaków sterujących 57
- Apostrof i cudzysłów 58
- Tworzenie programów w edytorze pliku IDLE 59
- Kod źródłowy programu typu Witaj, świecie! 59
- Sprawdzanie kodu źródłowego za pomocą narzędzia Online Diff Tool 61
- Użycie środowiska IDLE w celu późniejszego uzyskania dostępu do programu 62
- Zapisywanie programu 62
- Uruchamianie programu 63
- Otwieranie wcześniej zapisanych programów 64
- W jaki sposób działa program Witaj, świecie!? 64
- Komentarze 64
- Wyświetlanie wskazówek dla użytkownika 65
- Pobieranie danych wejściowych od użytkownika 65
- Zakończenie programu 66
- Podsumowanie 66
- Kod źródłowy programu wykorzystującego szyfr odwrotny 70
- Przykładowe uruchomienie programu 70
- Definiowanie komentarzy i zmiennych 71
- Określanie długości ciągu tekstowego 72
- Wprowadzenie do pętli while 73
- Boolowski typ danych 73
- Operatory porównania 74
- Blok kodu 76
- Konstrukcja pętli while 77
- "Rośnięcie" ciągu tekstowego 78
- Usprawnianie programu za pomocą funkcji input() 81
- Podsumowanie 82
- Kod źródłowy programu wykorzystującego szyfr Cezara 86
- Przykładowe uruchomienie programu 87
- Importowanie modułu i przypisywanie zmiennych 88
- Stałe i zmienne 89
- Pętla for 90
- Przykład pętli for 90
- Pętla while będąca odpowiednikiem pętli for 91
- Konstrukcja if 92
- Przykład użycia polecenia if 92
- Polecenie else 92
- Polecenie elif 93
- Operatory in i not in 94
- Metoda find() 95
- Szyfrowanie i deszyfrowanie symboli 96
- Obsługa zawinięcia 97
- Obsługa symboli spoza zbioru symboli 98
- Wyświetlanie i kopiowanie skonwertowanego ciągu tekstowego 98
- Szyfrowanie innych symboli 99
- Podsumowanie 100
- Kod źródłowy programu wykorzystującego szyfr odwrotny 104
- Przykładowe uruchomienie programu 105
- Definiowanie zmiennych 106
- Iteracja z użyciem funkcji range() 106
- Deszyfrowanie wiadomości 108
- Stosowanie formatowania ciągu tekstowego do wyświetlenia klucza i deszyfrowanej wiadomości 109
- Podsumowanie 110
- Sposób działania szyfru przestawieniowego 113
- Ręczne szyfrowanie wiadomości 114
- Tworzenie programu szyfrującego 116
- Kod źródłowy programu wykorzystującego szyfr kolumnowy 117
- Przykładowe uruchomienie programu 118
- Samodzielne definiowanie funkcji za pomocą polecenia def 118
- Definiowanie funkcji pobierającej argumenty 119
- Zmiana parametru istniejącego tylko wewnątrz funkcji 120
- Definiowanie funkcji main() 121
- Przekazywanie klucza i wiadomości jako argumentów 122
- Typ danych listy 123
- Ponowne przypisywanie elementów na liście 124
- Lista list 125
- Stosowanie funkcji len() i operatora in z listą 126
- Konkatenacja listy i replikacja za pomocą operatorów + i * 127
- Algorytm szyfrowania przestawieniowego 127
- Rozszerzone operatory przypisania 128
- Iteracja currentIndex przez wiadomość 129
- Metoda join() 131
- Wartość zwrotna i polecenie return 132
- Przykład polecenia return 132
- Zwrot szyfrogramu 133
- Zmienna __name__ 133
- Podsumowanie 134
- Łamanie szyfru przestawieniowego za pomocą kartki i ołówka 138
- Kod źródłowy programu deszyfrującego wiadomość chronioną szyfrem przestawieniowym 139
- Przykładowe uruchomienie programu 141
- Importowanie modułów i definiowanie funkcji main() 141
- Deszyfrowanie wiadomości za pomocą klucza 142
- Funkcje round(), math.ceil() i math.floor() 142
- Funkcja decryptMessage() 143
- Operatory boolowskie 145
- Dostosowywanie wartości zmiennych column i row 148
- Wywoływanie funkcji main() 150
- Podsumowanie 150
- Kod źródłowy programu do testowania innych programów 154
- Przykładowe uruchomienie programu 155
- Importowanie modułów 156
- Generowanie liczb pseudolosowych 156
- Tworzenie losowo wybranego ciągu tekstowego 158
- Powielanie ciągu tekstowego losowo wybraną liczbę razy 158
- Zmienna listy używa odwołania 159
- Przekazywanie odwołania 162
- Stosowanie funkcji copy.deepcopy() do powielenia listy 162
- Funkcja random.shuffle() 163
- Losowe mieszanie ciągu tekstowego 163
- Testowanie poszczególnych wiadomości 164
- Sprawdzanie poprawności szyfrowania i zakończenie programu 165
- Wywoływanie funkcji main() 166
- Testowanie programu 166
- Podsumowanie 167
- Pliki zwykłego tekstu 170
- Kod źródłowy programu wykorzystującego szyfr przestawieniowy do szyfrowania pliku 170
- Przykładowe uruchomienie programu 171
- Praca z plikami 172
- Otwieranie pliku 172
- Zapisywanie i zamykanie pliku 173
- Odczyt danych z pliku 174
- Funkcja main() programu 175
- Sprawdzanie istnienia pliku 175
- Funkcja os.path.exists() 176
- Sprawdzanie za pomocą funkcji os.path.exists() istnienia pliku danych wejściowych 176
- Stosowanie metod ciągu tekstowego do zapewnienia większej elastyczności danych wejściowych 177
- Metody ciągu tekstowego upper(), lower() i title() 177
- Metody ciągu tekstowego startswith() i endswith() 177
- Stosowanie metod ciągu tekstowego w programie 178
- Odczyt pliku danych wejściowych 179
- Pomiar czasu operacji szyfrowania i deszyfrowania 179
- Moduł time i funkcja time.time() 179
- Stosowanie funkcji time.time() w programie 180
- Zapis danych wyjściowych do pliku 181
- Wywoływanie funkcji main() 181
- Podsumowanie 182
- Jak komputer może zrozumieć język angielski? 184
- Kod źródłowy modułu do wykrywania języka angielskiego 186
- Przykładowe uruchomienie programu 187
- Polecenia i definiowanie stałych 187
- Typ danych w postaci słownika 188
- Różnice między słownikiem i listą 189
- Dodawanie lub modyfikowanie elementów słownika 190
- Stosowanie funkcji len() ze słownikiem 191
- Stosowanie operatora in ze słownikiem 191
- Wyszukiwanie elementów w słowniku odbywa się szybciej niż na liście 192
- Stosowanie pętli for w słowniku 192
- Implementacja pliku słownika 193
- Metoda split() 193
- Podział słownika na poszczególne słowa 194
- Zwrot danych słownika 194
- Zliczanie liczby słów angielskich w wiadomości 195
- Błąd dzielenia przez zero 196
- Zliczanie dopasowań słów w języku angielskim 196
- Funkcje float(), int() i str() oraz dzielenie całkowite 197
- Określanie proporcji angielskich słów w wiadomości 198
- Usuwanie znaków innych niż litery 198
- Metoda append() typu listy 199
- Tworzenie ciągu tekstowego liter 200
- Wykrywanie słów angielskich 200
- Stosowanie argumentów domyślnych 200
- Obliczanie wartości procentowych 201
- Podsumowanie 203
- Kod źródłowy programu umożliwiającego złamanie szyfru przestawieniowego 206
- Przykładowe uruchomienie programu 207
- Importowanie modułów 208
- Wielowierszowy ciąg tekstowy ujęty w potrójny cudzysłów 208
- Wyświetlanie wyniku deszyfrowania wiadomości 209
- Pobranie deszyfrowanej wiadomości 210
- Metoda strip() ciągu tekstowego 212
- Stosowanie metody strip() ciągu tekstowego 213
- Nieudana próba deszyfrowania wiadomości 213
- Wywoływanie funkcji main() 214
- Podsumowanie 214
- Arytmetyka modularna 216
- Operator reszty z dzielenia 217
- Wyszukiwanie dzielników do obliczenia największego wspólnego dzielnika 218
- Przypisanie wielokrotne 220
- Algorytm Euklidesa do wyszukiwania największego wspólnego dzielnika 221
- Sposób działania szyfrów multiplikatywnego i afinicznego 222
- Wybór poprawnego klucza multiplikatywnego 223
- Szyfrowanie z użyciem szyfru afinicznego 224
- Deszyfrowanie szyfru afinicznego 225
- Określanie odwrotności modularnej 226
- Operator dzielenia całkowitego 226
- Kod źródłowy modułu cryptomath 227
- Podsumowanie 228
- Kod źródłowy programu wykorzystującego szyfr afiniczny 232
- Przykładowe uruchomienie programu 233
- Importowanie modułów i stałych oraz definiowanie funkcji main() 234
- Generowanie i weryfikowanie kluczy 236
- Typ danych w postaci krotki 236
- Sprawdzanie pod kątem słabych kluczy 237
- Ile kluczy może mieć szyfr afiniczny? 238
- Tworzenie funkcji szyfrującej 240
- Tworzenie funkcji deszyfrującej 241
- Generowanie losowych kluczy 242
- Wywoływanie funkcji main() 243
- Podsumowanie 244
- Kod źródłowy programu umożliwiającego złamanie szyfru afinicznego 245
- Przykładowe uruchomienie programu 247
- Importowanie modułów i stałych oraz definiowanie funkcji main() 248
- Funkcja odpowiedzialna za złamanie szyfru afinicznego 249
- Operator wykładniczy 249
- Obliczanie całkowitej liczby kluczy, których można użyć 250
- Polecenie continue 251
- Stosowanie polecenia continue do pominięcia kodu 252
- Wywoływanie funkcji main() 253
- Podsumowanie 254
- Jak działa prosty szyfr podstawieniowy? 256
- Kod źródłowy programu wykorzystującego szyfr podstawieniowy 257
- Przykładowe uruchomienie programu 259
- Importowanie modułów i stałych oraz definiowanie funkcji main() 259
- Metoda sort() listy 261
- Funkcje opakowujące 262
- Funkcja translateMessage() 263
- Metody isupper() i islower() ciągu tekstowego 265
- Zachowywanie wielkości liter dzięki metodzie isupper() 266
- Generowanie losowego klucza 267
- Wywoływanie funkcji main() 268
- Podsumowanie 268
- Stosowanie wzorca słowa do deszyfrowania 272
- Znajdowanie wzorca słowa 272
- Wyszukiwanie potencjalnych liter odszyfrowujących 273
- Omówienie procesu łamania szyfru 275
- Moduł wzorca słowa 275
- Kod źródłowy programu wykorzystującego szyfr podstawieniowy 276
- Przykładowe uruchomienie programu 280
- Importowanie modułów i stałych 280
- Wyszukiwanie znaków za pomocą wyrażeń regularnych 281
- Konfigurowanie funkcji main() 281
- Wyświetlanie użytkownikowi wyniku operacji łamania szyfru 282
- Tworzenie mapowania szyfrogramu 283
- Tworzenie pustego mapowania 283
- Dodawanie liter do mapowania 283
- Łączenie dwóch mapowań 285
- W jaki sposób działają funkcje pomocnicze mapowania liter? 286
- Wyszukiwanie zdeszyfrowanych liter w mapowaniu 290
- Testowanie funkcji removeSolvedLettersFromMapping() 292
- Funkcja hackSimpleSub() 292
- Metoda replace() ciągu tekstowego 294
- Deszyfrowanie wiadomości 295
- Deszyfrowanie w powłoce interaktywnej 296
- Wywoływanie funkcji main() 297
- Podsumowanie 298
- Stosowanie wielu liter kluczy w szyfrze Vigenere'a 300
- Dłuższe klucze szyfru Vigenere'a są znacznie bezpieczniejsze 302
- Wybór klucza uniemożliwiającego atak słownikowy 303
- Kod źródłowy programu wykorzystującego szyfr Vigenere'a 303
- Przykładowe uruchomienie programu 305
- Importowanie modułów i stałych oraz definiowanie funkcji main() 305
- Tworzenie ciągu tekstowego za pomocą procesu dołączania do listy 306
- Szyfrowanie i deszyfrowanie wiadomości 307
- Wywoływanie funkcji main() 310
- Podsumowanie 310
- Analiza częstotliwości występowania liter w tekście 314
- Dopasowywanie częstotliwości występowania liter 316
- Obliczanie wyniku dopasowania częstotliwości dla prostego szyfru podstawieniowego 316
- Obliczanie wyniku dopasowania częstotliwości dla prostego szyfru przestawieniowego 317
- Stosowanie analizy częstotliwości do złamania szyfru Vigenere'a 318
- Kod źródłowy programu obliczającego wynik dopasowania częstotliwości 319
- Przechowywanie liter w kolejności ETAOIN 321
- Zliczanie liter w wiadomości 321
- Pobieranie pierwszego elementu składowego krotki 323
- Układanie liter według częstotliwości ich występowania w wiadomości 323
- Zliczanie liter za pomocą funkcji getLetterCount() 324
- Tworzenie słownika częstotliwości wystąpień i listy liter 324
- Sortowanie liter w odwrotnej kolejności ETAOIN 325
- Sortowanie list słownika według częstotliwości występowania 330
- Tworzenie listy sortowanych liter 332
- Obliczanie wyniku dopasowania częstotliwości dla wiadomości 332
- Podsumowanie 334
- Atak słownikowy w celu złamania szyfru Vigenere'a metodą brute force 336
- Kod źródłowy programu umożliwiającego złamanie szyfru Vigenere'a za pomocą ataku słownikowego 336
- Przykładowe uruchomienie programu 337
- Informacje o programie do łamania szyfru Vigenere'a za pomocą ataku słownikowego 337
- Stosowanie metody Kasiskiego do ustalenia długości klucza 338
- Odszukanie powtarzających się sekwencji 338
- Pobieranie dzielników liczb określających odstępy 339
- Pobieranie każdej n-tej litery ciągu tekstowego 341
- Stosowanie analizy częstotliwości do złamania poszczególnych podkluczy 342
- Przeprowadzanie ataku brute force na możliwe klucze 344
- Kod źródłowy programu umożliwiającego złamanie szyfru Vigenere'a 344
- Przykładowe uruchomienie programu 349
- Importowanie modułów i definiowanie funkcji main() 350
- Wyszukiwanie powtarzających się sekwencji 351
- Obliczanie dzielników odstępów 354
- Usuwanie duplikatów za pomocą funkcji set() 355
- Usuwanie powtarzających się dzielników i sortowanie listy 355
- Wyszukiwanie najczęściej występujących dzielników 356
- Określanie prawdopodobnej długości klucza 358
- Metoda listy extend() 358
- Rozszerzanie słownika repeatedSeqSpacings 359
- Pobieranie dzielników z factorsByCount 360
- Pobieranie liter szyfrowanych za pomocą tego samego podklucza 360
- Próba deszyfrowania z użyciem potencjalnych długości klucza 362
- Argument w postaci słowa kluczowego key funkcji print() 364
- Uruchamianie programu w trybie cichym lub wyświetlania informacji użytkownikowi 365
- Wyszukiwanie możliwych kombinacji podkluczy 365
- Wyświetlanie deszyfrowanego tekstu z użyciem właściwej wielkości liter 369
- Zwrot deszyfrowanej wiadomości 370
- Opuszczanie pętli po znalezieniu potencjalnego klucza 371
- Atak brute force na wszystkie długości klucza 371
- Wywoływanie funkcji main() 372
- Modyfikowanie stałych programu 373
- Podsumowanie 373
- Niemożliwy do złamania szyfr z kluczem jednorazowym 376
- Tworzenie klucza o długości odpowiadającej długości wiadomości 376
- Zapewnianie prawdziwej losowości klucza 378
- Dlaczego klucza jednorazowego można użyć tylko raz? 379
- Dlaczego dwukrotnie użyty klucz jednorazowy to szyfr Vigenere'a? 379
- Podsumowanie 380
- Co to jest liczba pierwsza? 382
- Kod źródłowy modułu liczb pierwszych 384
- Przykładowe uruchomienie modułu 386
- Sposób działania algorytmu próbnego dzielenia 386
- Implementacja algorytmu próbnego dzielenia 388
- Sito Eratostenesa 389
- Generowanie liczb pierwszych za pomocą sita Eratostenesa 391
- Algorytm pierwszości Rabina-Millera 392
- Wyszukiwanie ogromnych liczb pierwszych 393
- Generowanie ogromnych liczb pierwszych 395
- Podsumowanie 395
- Kryptografia klucza publicznego 398
- Problem z uwierzytelnieniem 400
- Podpis cyfrowy 400
- Uważaj na atak MITM 401
- Etapy generowania kluczy publicznego i prywatnego 402
- Kod źródłowy programu generującego klucze kryptografii klucza publicznego 403
- Przykładowe uruchomienie programu 404
- Tworzenie funkcji main() 406
- Generowanie kluczy za pomocą funkcji generateKey() 406
- Obliczanie wartości e 407
- Obliczanie wartości d 407
- Zwracanie kluczy 408
- Tworzenie plików kluczy za pomocą funkcji makeKeyFiles() 408
- Wywoływanie funkcji main() 410
- Hybrydowe systemy kryptograficzne 411
- Podsumowanie 411
- Jak działa kryptografia klucza publicznego? 414
- Tworzenie bloku 414
- Konwersja ciągu tekstowego na blok 415
- Matematyka szyfrowania i deszyfrowania za pomocą kryptografii klucza publicznego 416
- Konwersja bloku na ciąg tekstowy 418
- Dlaczego nie można złamać szyfru wykorzystującego kryptografię klucza publicznego? 420
- Kod źródłowy programu wykorzystującego kryptografię klucza publicznego 421
- Przykładowe uruchomienie programu 425
- Konfiguracja programu 426
- Wybór trybu pracy programu 426
- Konwersja ciągu tekstowego na bloki za pomocą funkcji getBlocksFromText() 428
- Funkcje min() i max() 428
- Przechowywanie bloków w blockInt 429
- Stosowanie funkcji getTextFromBlocks() do deszyfrowania wiadomości 431
- Stosowanie metody insert() listy 432
- Łączenie listy message i tworzenie na jej podstawie jednego ciągu tekstowego 432
- Tworzenie funkcji encryptMessage() 433
- Tworzenie funkcji decryptMessage() 433
- Odczytywanie kluczy publicznego i prywatnego z ich plików 434
- Zapisywanie szyfrogramu do pliku 435
- Deszyfrowanie danych z pliku 437
- Wywoływanie funkcji main() 439
- Podsumowanie 439
- Na czym polega działanie debugera? 441
- Usuwanie błędów z programu wykorzystującego szyfr odwrotny 443
- Definiowanie punktu przerwania 445
- Podsumowanie 447
- Rozdział 1. 449
- Rozdział 2. 450
- Rozdział 3. 451
- Rozdział 4. 452
- Rozdział 5. 453
- Rozdział 6. 454
- Rozdział 7. 455
- Rozdział 8. 457
- Rozdział 9. 459
- Rozdział 10. 459
- Rozdział 11. 460
- Rozdział 12. 461
- Rozdział 13. 462
- Rozdział 14. 462
- Rozdział 15. 463
- Rozdział 16. 463
- Rozdział 17. 464
- Rozdział 18. 464
- Rozdział 19. 465
- Rozdział 20. 465
- Rozdział 21. 466
- Rozdział 22. 466
- Rozdział 23. 466
O autorze 4
O korektorach merytorycznych 4
Podziękowania 17
Wprowadzenie 19
1. Papier jako narzędzie kryptograficzne 29
2. Programowanie w powłoce interaktywnej 39
3. Ciągi tekstowe i tworzenie programów 49
4. Szyfr odwrotny 69
5. Szyfr Cezara 85
6. Łamanie szyfru Cezara za pomocą ataku brute force 103
7. Szyfrowanie za pomocą szyfru przestawieniowego 113
8. Deszyfrowanie wiadomości chronionej szyfrem przestawieniowym 137
9. Tworzenie programu do testowania innych programów 153
10. Szyfrowanie i deszyfrowanie plików 169
11. Programowe wykrywanie języka angielskiego 183
12. Łamanie szyfru przestawieniowego 205
13. Moduł arytmetyki modularnej dla szyfru afinicznego 215
14. Programowanie szyfru afinicznego 231
15. Łamanie szyfru afinicznego 245
16. Programowanie prostego szyfru podstawieniowego 255
17. Łamanie prostego szyfru podstawieniowego 271
18. Programowanie szyfru Vigenere'a 299
19. Analiza częstotliwości 313
20. Łamanie szyfru Vigenere'a 335
21. Szyfr z kluczem jednorazowym 375
22. Wyszukiwanie i generowanie liczb pierwszych 381
23. Generowanie kluczy dla szyfru klucza publicznego 397
24. Programowanie szyfru klucza publicznego 413
A. Debugowanie kodu Pythona 441
B. Odpowiedzi do ćwiczeń 449
Oceny i opinie klientów: Złam ten kod z Pythonem. Jak tworzyć, testować i łamać szyfry Al Sweigart (1)
Weryfikacja opinii następuję na podstawie historii zamówień na koncie Użytkownika umieszczającego opinię. Użytkownik mógł otrzymać punkty za opublikowanie opinii uprawniające do uzyskania rabatu w ramach Programu Punktowego.
(1)
(0)
(0)
(0)
(0)
(0)