• Obniżka

Złam ten kod z Pythonem. Jak tworzyć, testować i łamać szyfry - Al Sweigart

Indeks: KSZ-19783 EAN: 9788328374959
Książka podejmuje zagadnienie szyfrowania, co prowadzi nas do algorytmów szyfrujących - ich implementacja czy programowe łamanie szyfrów to równocześnie fascynująca dziedzina wiedzy i pole do zabawy, ćwiczeń oraz eksperymentowania z programowaniem. Książka przeznaczona głównie dla osób, które nie umieją programować, jednak chciały by zapoznać się z kryptografią.
Złam ten kod z Pythonem. Jak tworzyć, testować i łamać szyfry - Al Sweigart
59,67 zł -5%
56,69 zł
53,99 zł netto
Najniższa cena z 30 dni: 56,69 zł
Zapłać później
Producent: Helion

Opis produktu: Złam ten kod z Pythonem. Jak tworzyć, testować i łamać szyfry - Al Sweigart

Książka podejmuje zagadnienie szyfrowania, które do niedawna było związane głównie z bezpieczeństwem publicznym. W dzisiejszych czasach rządy oraz różnego rodzaju służby starają się uzyskać możliwość odczytywania zaszyfrowanych danych. Kryptografia stała się podstawą globalnej ekonomii, zapewniającą ochronę milionom użytkownikom i większości organizacji. Prowadzi nas to do algorytmów szyfrujących - ich implementacja czy programowe łamanie szyfrów to równocześnie fascynująca dziedzina wiedzy i pole do zabawy, ćwiczeń oraz eksperymentowania z programowaniem. Książka przeznaczona głównie dla osób, które nie umieją programować, jednak chciały by zapoznać się z kryptografią.

Złam ten kod z Pythonem. Jak tworzyć, testować i łamać szyfry - Al Sweigart.

Złam ten kod z Pythonem. Jak tworzyć, testować i łamać szyfry - Al Sweigart.

Książka przeznaczona głównie dla osób, które nie umieją programować, jednak chciały by zapoznać się z kryptografią.

Książka przeznaczona głównie dla osób, które nie umieją programować, jednak chciały by zapoznać się z kryptografią.

Główne zagadnienia:

  • 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

Informacje o książce

  • Tytuł: Złam ten kod z Pythonem. Jak tworzyć, testować i łamać szyfry
  • Autor: Al Sweigart
  • ISBN: 978-83-283-7495-9
  • Rok wydania: 2021
  • Format: 168 x 235 mm
  • Ilość stron: 467
  • Wydawnictwo: Helion S.A.
  • Oprawa: miękka

Spis treści:

  • O autorze 4
  • O korektorach merytorycznych 4
  • Podziękowania 17
  • Wprowadzenie 19
  • 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

  • 1. Papier jako narzędzie kryptograficzne 29
  • 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

  • 2. Programowanie w powłoce interaktywnej 39
  • 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

  • 3. Ciągi tekstowe i tworzenie programów 49
  • 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

  • 4. Szyfr odwrotny 69
  • 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

  • 5. Szyfr Cezara 85
  • 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

  • 6. Łamanie szyfru Cezara za pomocą ataku brute force 103
  • 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

  • 7. Szyfrowanie za pomocą szyfru przestawieniowego 113
  • 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

  • 8. Deszyfrowanie wiadomości chronionej szyfrem przestawieniowym 137
  • Ł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

  • 9. Tworzenie programu do testowania innych programów 153
  • 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

  • 10. Szyfrowanie i deszyfrowanie plików 169
  • 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

  • 11. Programowe wykrywanie języka angielskiego 183
  • 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

  • 12. Łamanie szyfru przestawieniowego 205
  • 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

  • 13. Moduł arytmetyki modularnej dla szyfru afinicznego 215
  • 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

  • 14. Programowanie szyfru afinicznego 231
  • 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

  • 15. Łamanie szyfru afinicznego 245
  • 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

  • 16. Programowanie prostego szyfru podstawieniowego 255
  • 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

  • 17. Łamanie prostego szyfru podstawieniowego 271
  • 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

  • 18. Programowanie szyfru Vigenere'a 299
  • 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

  • 19. Analiza częstotliwości 313
  • 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

  • 20. Łamanie szyfru Vigenere'a 335
  • 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

  • 21. Szyfr z kluczem jednorazowym 375
  • 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

  • 22. Wyszukiwanie i generowanie liczb pierwszych 381
  • 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

  • 23. Generowanie kluczy dla szyfru klucza publicznego 397
  • 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

  • 24. Programowanie szyfru klucza publicznego 413
  • 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

  • A. Debugowanie kodu Pythona 441
  • Na czym polega działanie debugera? 441

  • Usuwanie błędów z programu wykorzystującego szyfr odwrotny 443

  • Definiowanie punktu przerwania 445

Książka - Autor Al Sweigart
Książka - ISBN 978-83-283-7495-9
Książka - Oprawa miękka
Książka - Wydawnictwo Helion SA
Tematyka Python
Szerokość opakowania 23 cm
Wysokość opakowania 3 cm
Głębokość opakowania 17 cm
Masa opakowania 0.8 kg

Jako pierwszy zadaj pytanie dotyczące tego produktu!

Opinie o produkcie

Złam ten kod z Pythonem. Jak tworzyć, testować i łamać szyfry - Al Sweigart

5/5

Średnia Ocena

1

Opinie Klientów
Poniższe opinie zbieramy
i weryfikujemy przy pomocy
zewnętrznego partnera Trustmate
i pochodzą z procesu pozakupowego.
Dariusz 06.09.2022 Potwierdzony zakup
Książka spoko

Klienci którzy zakupili ten produkt kupili również:

Produkty z tej samej kategorii: