Wróć do informacji o e-podręczniku Wydrukuj Pobierz materiał do PDF Pobierz materiał do EPUB Pobierz materiał do MOBI Zaloguj się, aby dodać do ulubionych Zaloguj się, aby skopiować i edytować materiał Zaloguj się, aby udostępnić materiał Zaloguj się, aby dodać całą stronę do teczki
1
Pokaż ćwiczenia:
11
Ćwiczenie 1

Wykorzystaj moduł primePy (pobierz go z witryny Python Package Index (PyPI), a następnie zainstaluj za pomocą narzędzia pip). Przeanalizuj kod, uruchamiając go lokalnie w środowisku IDLE, a następnie wykonaj polecenie. Zastosowana w kodzie funkcja primes.between(x, y) (z modułu primePy) zwraca wszystkie liczby pierwsze z zakresu od x do y. Funkcja fabs(a, b) zwraca bezwzględną różnicę między a i b jako typ float. Funkcja choice(zbiór) zwraca losowy element danego zbioru (funkcja seed inicjalizuje generator liczb losowych).

Linia 1. from primePy import primes. Linia 2. from math import fabs. Linia 3. from random import choice przecinek seed. Linia 5. seed otwórz nawias okrągły 23487523 zamknij nawias okrągły. Linia 7. def sprawdz podkreślnik dlugosc otwórz nawias okrągły num1 przecinek num2 przecinek max znak równości 2 zamknij nawias okrągły dwukropek. Linia 8. return True if fabs otwórz nawias okrągły num1 kropka bit podkreślnik length otwórz nawias okrągły zamknij nawias okrągły minus num2 kropka bit podkreślnik length otwórz nawias okrągły zamknij nawias okrągły zamknij nawias okrągły otwórz nawias ostrokątny znak równości max else False. Linia 10. liczby podkreślnik pierwsze znak równości primes kropka between otwórz nawias okrągły 20 przecinek 20000 zamknij nawias okrągły. Linia 12. while True dwukropek. Linia 13. n1 znak równości choice otwórz nawias okrągły liczby podkreślnik pierwsze zamknij nawias okrągły. Linia 14. n2 znak równości choice otwórz nawias okrągły liczby podkreślnik pierwsze zamknij nawias okrągły. Linia 15. if sprawdz podkreślnik dlugosc otwórz nawias okrągły n1 przecinek n2 zamknij nawias okrągły dwukropek break. Linia 17. print otwórz nawias okrągły cudzysłów Znalezione liczby pierwsze dwukropek cudzysłów przecinek n1 przecinek cudzysłów i cudzysłów przecinek n2 zamknij nawias okrągły.
REmQ2pkVs7ONC
Zaznacz wszystkie prawidłowe odpowiedzi: Możliwe odpowiedzi: 1. Program wyświetli komunikat We found: 15217 and 7867 prime numbers..., 2. Program wyświetli komunikat We found: 11087 and 7127 prime numbers..., 3. Długość tablicy len(primes_numbers) wynosi 2154., 4. Długość tablicy len(primes_numbers) wynosi 2254., 5. Program zostanie przerwany z błędem Execution Bit Error Rate
21
Ćwiczenie 2

Przeanalizuj kod, uruchamiając go lokalnie w środowisku IDLE lub w dowolnym innym IDE, a następnie wykonaj polecenie. Funkcja gcd(a, b) zwraca największy wspólny dzielnik liczb a i b.

Linia 1. from math import gcd. Linia 3. def mod podkreślnik odwr otwórz nawias okrągły a przecinek m zamknij nawias okrągły dwukropek. Linia 4. for x in range otwórz nawias okrągły 1 przecinek m zamknij nawias okrągły dwukropek. Linia 5. if otwórz nawias okrągły a asterysk x zamknij nawias okrągły procent m znak równości znak równości 1 dwukropek. Linia 6. return x. Linia 7. return None. Linia 9. def testuj podkreślnik mod otwórz nawias okrągły a przecinek b zamknij nawias okrągły dwukropek. Linia 10. y znak równości mod podkreślnik odwr otwórz nawias okrągły a przecinek b zamknij nawias okrągły. Linia 11. if otwórz nawias okrągły y is not None and y wykrzyknik znak równości a zamknij nawias okrągły dwukropek. Linia 12. return True. Linia 13. else dwukropek. Linia 14. return False. Linia 16. phi znak równości otwórz nawias okrągły 233 minus 1 zamknij nawias okrągły asterysk otwórz nawias okrągły 137 minus 1 zamknij nawias okrągły. Linia 17. print otwórz nawias okrągły cudzysłów Dla phi znak równości cudzysłów przecinek phi zamknij nawias okrągły. Linia 19. l znak równości otwórz nawias kwadratowy x for x in range otwórz nawias okrągły 2 przecinek phi zamknij nawias okrągły if gcd otwórz nawias okrągły phi przecinek x zamknij nawias okrągły znak równości znak równości 1 and testuj podkreślnik mod otwórz nawias okrągły x przecinek phi zamknij nawias okrągły zamknij nawias kwadratowy. Linia 21. print otwórz nawias okrągły cudzysłów Znaleziono elementów dwukropek cudzysłów przecinek len otwórz nawias okrągły l zamknij nawias okrągły przecinek cudzysłów kropka cudzysłów zamknij nawias okrągły.
R7CYv5FXE0Zvf
Zaznacz wszystkie prawidłowe odpowiedzi: Możliwe odpowiedzi: 1. Program wyświetli komunikat Building for phi= 31552
Found 14320 elements.
, 2. Program wyświetli komunikat Building for phi= 31552
Found 14420 elements.
, 3. Długość tablicy len(l) wynosi 14420., 4. Długość tablicy len(l) wynosi 14320., 5. Program zostanie przerwany z błędem Execution Bit Error Rate, 6. funkcja gcd istnieje w module math od wersji Python 3.3, 7. funkcja gcd istnieje w module math od wersji Python 3.5, 8. funkcja gcd to skrót nazwy "greatest code density", 9. funkcja gcd to skrót nazwy "greatest common divisor"
31
Ćwiczenie 3

Zdefiniuj funkcję, która wykona następujące operacje:

  • wygeneruje listę liczb względnie pierwszych (czyli takich, których największym wspólnym dzielnikiem jest 1), która zostanie użyta jako tablica_kodowania,

  • zwróci zaszyfrowane dane w postaci listy bajtów.

Szyfrowanie polega na pobraniu kolejnego bajtu łańcucha wejściowego i wykonaniu na nim operacji xor z kolejnym bajtem tablica_kodowania. Jeśli tekst jawny będzie dłuższy niż tablica klucza, należy użyć funkcji cycle() z biblioteki intertools, która zapętla podaną tablicę.

Program przetestuj dla danych:

Linia 1. tekst podkreślnik jawny znak równości cudzysłów Python to jezyk programowania cudzysłów. Linia 2. krotka podkreślnik nq znak równości otwórz nawias okrągły 43 przecinek 79 zamknij nawias okrągły.

oraz

Linia 1. tekst podkreślnik jawny znak równości cudzysłów Linux minus system operacyjny cudzysłów. Linia 2. krotka podkreślnik nq znak równości otwórz nawias okrągły 31 przecinek 89 zamknij nawias okrągły.

Specyfikacja problemu:

Dane:

  • tekst_jawny – łańcuch znaków; tekst wejściowy

  • krotka_nq – krotka zawierająca dwie liczby pierwsze

Wynik:

Program wypisuje zaszyfrowany tekst.

Przykładowe wywołanie:

Linia 1. wynik znak równości szyfruj otwórz nawias okrągły cudzysłów Linux minus system operacyjny cudzysłów przecinek otwórz nawias okrągły 37 przecinek 67 zamknij nawias okrągły zamknij nawias okrągły. Linia 2. print otwórz nawias okrągły wynik zamknij nawias okrągły. Linia 3. kratka otwórz nawias kwadratowy 73 przecinek 110 przecinek 99 przecinek 100 przecinek 107 przecinek 55 przecinek 52 przecinek 61 przecinek 108 przecinek 90 przecinek 86 przecinek 93 przecinek 78 przecinek 66 przecinek 17 przecinek 90 przecinek 75 przecinek 88 przecinek 51 przecinek 34 przecinek 36 przecinek 48 przecinek 37 przecinek 61 przecinek 44 zamknij nawias kwadratowy.
RGhuMRL732CjZ
Wymyśl pytanie na kartkówkę związane z tematem materiału.
21
Ćwiczenie 4

W standardowej tabeli ASCII jest 95 znaków, których używamy do pisania – w obrębie jednej linii nie ma możliwości formatowania (użycia tabulatorów itp.). Do zbioru znaków należą litery, cyfry oraz inne znaki specjalne (w tym tylko jeden znak biały – spacja). Kody ASCII, o których mowa, to znaki od kodu 32 (znak spacji ' ') do kodu 126 (znak tyldy '~'). Liczba 95 jest iloczynem dwóch liczb pierwszych: 5 i 19.

Napisz program, który będzie szyfrował i wypisywał podane na wejściu wiadomości metodą RSA, na podstawie klucza publicznego, składającego się z wykładnika publicznego wykladnik i liczby n.

Program przetestuj dla następujących danych:

  • wykladnik = 11

  • n = 95

  • tekst_jawny = "Lex retro non agit"

Specyfikacja problemu:

Dane:

  • wykladnik – wykładnik publiczny, liczba naturalna

  • n - iloczyn dwóch liczb pierwszych, liczba naturalna

  • tekst_jawny – ciąg znaków do zaszyfrowania

Wynik:

Program na standardowe wyjście wypisuje zaszyfrowaną wiadomość.

RPcPlLEMqesWG
Wymyśl pytanie na kartkówkę związane z tematem materiału.
31
Ćwiczenie 5

Dany jest szyfrogram zaszyfrowany za pomocą pewnego klucza publicznego. Masz dostęp do klucza prywatnego klucz_prywatny. Napisz program, który odszyfruje wiadomość i wypisze ją na wyjście standardowe. Przetestuj działanie programu dla następujących danych:

  • klucz_prywatny = (65, 95)

  • szyfrogram = "ZRst- d*.z^ -7t Ltde m7 de^Rd*-."

Specyfikacja problemu:

Dane:

  • klucz_prywatny – krotka liczb naturalnych

  • szyfrogram – zaszyfrowana wiadomość, ciąg znaków

Wynik:

Program na standardowe wyjście wypisuje odszyfrowaną wiadomość.

R1ShFT8VkSKg3
Wymyśl pytanie na kartkówkę związane z tematem materiału.