- Obor zabývající se šifrováním
- V kontextu kybernetické bezpečnosti využívána k ochraně dat - zašifrování dle vybraného algoritmu
- Oboje transformace dat do jiné podoby
- Ačkoliv se to tak může zdát, opravdu se nejedná o stejnou věc
- Pro přeměnu dat využíván klíč
- Klíč dle druhu algoritmu buď symetrický nebo asymetrický
- Symetrický
- Jeden klíč pro šifrování a dešifrování
- Příklady symetrických algoritmů: AES, Caesarova šifra, Vigenèrova šifra
- Asymetrický
- 2 klíče - veřejný (sloužící k zašifrování) a soukromý (sloužící k dešifrování)
- Příklady asymetrických algoritmů: RSA, Lizard, ECC
- Symetrický
-
Reprezentace dat dle předem stanoveného kódu
-
Při kódování není zadáván žádný klíč -> velmi jednoduché zjistit původní obsah
-
Text "SSPS" zakódovaný pomocí Base64:
U1NQUw==
-
Nástroje pro kódování a dekódování:
- Jednosměrná matematická funkce
- Hash
- Výsledek hashovací funkce po zadání vstupních dat
- Jedná se tzv. o “Otisk prstu” dat
- Neměnný a unikátní (může se však stát tzv. kolize)
- Kolize - jeden hash náleží dvěma různým vstupním datům (stává se zřídka)
- Příklady hashovacích funkcí: md5, SHA512, Blake2
- Příklady využití: integrita dat, zabezpečení hesel
- Nelze dešifrovat, ale lze ho prolomit pomocí takzvaných "rainbow tables" (dlouhý seznam slov, která se zahashují a výsledný hash je porovnán)
- Příklad hashe MD5:
769ef95f8741c399409e69b409e7f808
(vstupní data - slovo "SSPS" ) - Nástroje na prolomení (cracknutí) hashů: Hashcat, JohnTheRipper, https://crackstation.net/
- sadu pokynů, kterými se program řídí
- Bez schopnosti tvorby algoritmů nemůžeme napsat kvalitní kód.
- Jednoduchý algoritmus napsaný v pseudokódu:
Vstup: heslo Pokud heslo == 1234: Vypiš "Správné heslo" Jinak: Vypiš "Špatné heslo"
-
každý programovací jazyk má v sobě zabudované základní datové typy
-
nejzákladnější datové typy:
int - celá čísla double - desetinná čísla string - textové řetězce char - jeden znak bool - true/false
- Syntaxe - sada pravidel, při jejímž porušení nebude program fungovat (např. v C# vše musí končit ";")
- Jednoduchý kód pro vypsání textu do konzole
-
v jazyce Python
print("Hello, World!")
-
v jazyce C
#include <stdio.h> int main() { printf("Hello, World!"); return 0; }
-
-
Část kódu, která se nevykonává, ale slouží k vysvětlení kódu, jeho zpřehlednění, či k zapsání poznámek (např. TODO)
-
Komentáře v Pythonu
# Toto je komentář """ Toto je komentář na více řádků """
-
Komentáře v C
// Toto je komentář /* Toto je komentář na více řádků */
-
Jednoduchý program, který bude zdravit uživatele
-
v jazyce Python
name = input("Zadej své jméno: ") print("Ahoj " + name)
-
v jazyce C
#include <stdio.h> int main() { char name[50]; printf("Zadej své jméno: "); scanf("%s", name); printf("Ahoj %s", name); return 0; }
-
- Umožňují vykonat část kódu, pokud je splněna určitá podmínka
- Příklad if/else statementu
-
v jazyce Python
# if, elif, else age = 18 if age < 18: print("Jsi dítě") elif age >= 65: print("Jsi důchodce") else: print("Jsi dospělý")
-
v jazyce C
#include <stdio.h> int main() { int age = 18; if (age < 18) { printf("Jsi dítě"); } else if (age >= 65) { printf("Jsi důchodce"); } else { printf("Jsi dospělý"); } return 0; }
-
- Umožnuje opakovat stejnou část kodu po stanovenou dobu
- Příklad for loopu
-
v jazyce Python
for i in range(10): print(i)
-
v jazyce C
#include <stdio.h> int main() { for (int i = 0; i < 10; i++) { printf("%d\n", i); } return 0; }
-
- Opakuje část kódu, dokud je splněna určitá podmínka
- Příklad while loopu
-
v jazyce Python
i = 0 while i < 10: print(i) i += 1
- v jazyce C
#include <stdio.h> int main() { int i = 0; while (i < 10) { printf("%d\n", i); i++; } return 0; }
-
- Umožňuje ukládat více hodnot do jedné proměnné
- Příklad pole
-
v jazyce Python
pole = [1, 2, 3, 4, 5] print(pole[0]) #Vypíše první prvek pole print(pole[3]) #Vypíše čtvrtý prvek pole print(len(pole)) #Vypíše délku pole
- v jazyce C
#include <stdio.h> int main() { int pole[] = {1, 2, 3, 4, 5}; printf("%d\n", pole[0]); //Vypíše první prvek pole printf("%d\n", pole[3]); //Vypíše čtvrtý prvek pole printf("%d\n", sizeof(pole) / sizeof(pole[0])); //Vypíše délku pole return 0; }
-
-
Kus kódu, který lze využívat opakovaně (stačí ji zavolat a ona se vykoná, zavolat ji lze opakovaně)
-
Program pozdravení s využitím metody/funkce
- v jazyce Python
def pozdrav(name): print("Ahoj " + name) print("Zadej své jméno: ") name = input() pozdrav(name)
- v jazyce C
#include <stdio.h> void pozdrav(char name[]) { printf("Hi %s\n", name); } int main() { char name[50]; printf("Zadej své jméno: "); scanf("%s", name); pozdrav(name); return 0; }
- V jazyce Python
while True: #Program se bude stále opakovat- Jednoduchá kalkulačka za použití while loopu a if/else statementů
print("Kalkulačka V1")
inputString = input("Chcete sčítat (+) nebo odčítat (-)?") #Načte uživatelský vstup
if inputString == "+": #Pokud je uživatelný vstup roven "+", čísla se budou sčítat
numberOne = input("Zadejte první číslo: ")
numberTwo = input("Zadejte druhé číslo: ")
result = int(numberOne) + int(numberTwo) #Sečte proměnné a výsledek zapíše do proměnné result
print("Výsledek součtu čísel je: " + str(result)) #Vypíše výsledek a vrátí se na začátek
elif inputString == "-": #Pokud je uživatelný vstup roven "-", čísla se budou odčítat
numberOne = input("Zadejte první číslo: ")
numberTwo = input("Zadejte druhé číslo: ")
result = int(numberOne) - int(numberTwo) #Odečte proměnné a výsledek zapíše do proměnné result
print("Výsledek rozdílu čísel je: " + str(result)) #Vypíše výsledek a vrátí se na začátek
else:
print("Neplatný vstup") #V případe, že by uživatel zadal něco jiného než "+" nebo "-", bude jeho vstup vyhodnocen jako neplatný a vrátí se na začátek
- V jazyce C
#include <stdio.h>
int main()
{
while (1) //Program se bude stále opakovat- Jednoduchá kalkulačka za použití while loopu a if/else statementů
{
char operation;
float numberOne;
float numberTwo;
printf("Zadejte operaci (+, -, *, /): ");
scanf(" %c", &operation);
printf("Zadejte první číslo: ");
scanf("%f", &numberOne);
printf("Zadejte druhé číslo: ");
scanf("%f", &numberTwo);
float result;
if (operation == '+') //Pokud je uživatelný vstup roven "+", čísla se budou sčítat
{
result = numberOne + numberTwo; //Sečte proměnné a výsledek zapíše do proměnné result
printf("Výsledek součtu čísel je: %f\n", result);
}
else if (operation == '-') //Pokud je uživatelný vstup roven "-", čísla se budou odčítat
{
result = numberOne - numberTwo; //Odečte proměnné a výsledek zapíše do proměnné result
printf("Výsledek rozdílu čísel je: %f\n", result); //Vypíše výsledek a vrátí se na začátek
}
else if (operation == '*')
{
result = numberOne * numberTwo; //Vynásobí proměnné a výsledek zapíše do proměnné result
printf("Výsledek rozdílu čísel je: %f\n", result); //Vypíše výsledek a vrátí se na začátek
}
else if (operation == '/')
{
result = numberOne / numberTwo; //Vydělí proměnné a výsledek zapíše do proměnné result
printf("Výsledek rozdílu čísel je: %f\n", result); //Vypíše výsledek a vrátí se na začátek
}
else
{
printf("Neplatný vstup\n"); //V případe, že by uživatel zadal něco jiného než "+" nebo "-", bude jeho vstup vyhodnocen jako neplatný a vrátí se na začátek
}
}
}