Utente:Matauten/Sandbox
Convertire tramite un linguaggio di crittografia una o più frasi utilizzando il linguaggio di programmazione C++.
Il progetto ha lo scopo di istruire principalmente i ragazzi delle scuole secondarie di primo grado all'utilizzo del linguaggio C++. Tramite la programmazione e l'esecuzione di un programma di crittografia basato sul cifrario di Cesare ed il cifrario a trasposizione numerica i ragazzi implementeranno la loro conoscenza del codice ed impareranno i rudimenti della crittografia; questo argomento risulta molto attuale e presente nel mondo informatico soprattutto a causa delle recenti modifiche legislative volte ad aumentare la tutela della privacy degli utenti della rete. L'obiettivo principale è di istruire gli utenti all'utilizzo del linguaggio di programmazione C++ attraverso un progetto in grado di aumentare la loro conoscenza delle tecniche di programmazione di base.
Crittografia
[modifica]Con la parola "crittografia" si intende quella tecnica che permette di "cifrare" un messaggio rendendolo incomprensibile a tutti tranne che al suo destinatario, il quale possiede la soluzione per decodificarlo. In generale i due processi principali che vengono applicati in crittografia si dividono in "cifratura" e "codifica". La cifratura è un procedimento che, tramite una regola conosciuta, rende non comprensibile un testo; il procedimento inverso è detto codifica e permette di convertire il messaggio in linguaggio comprensibile grazie alla conoscenza della soluzione.
Tipologie di crittografia utilizzate
[modifica]Cifrario di Cesare
[modifica]Il cifrario di Cesare, chiamato cosi in onore di Giulio Cesare che lo utilizzava per proteggere i suoi messaggi segreti, è uno dei più antichi metodi di crittografia di cui si abbia traccia storica. È un metodo a sostituzione alfabetica in cui ogni lettera del testo da codificare è sostituita dalla lettera che si trova un certo numero di posizioni dopo nell'alfabeto; la chiave di cifratura, ovvero la quantità di posizioni in cui viene spostata la lettera, è definita dall'utente.
Cifrario a trasposizione numerica
[modifica]Un cifrario a trasposizione numerica è un metodo di cifratura in cui le lettere vengono convertite in numeri seguendo l'ordine crescente dell'alfabeto, così che il testo cifrato costituisca una variante numerica del testo alfabetico.
Il linguaggio C++
[modifica]In informatica il C++ è un linguaggio di programmazione di alto livello che permette di eseguire operazioni complesse a partire da un codice sorgente composto da poche righe. Nato nel 1983 dall’ingegno di Bjarne Stroustrup, allora ricercatore presso AT&T, C++ è tra i primi 5 linguaggi più utilizzati al mondo. I campi di applicazione sono i più svariati: dal gaming alle applicazioni real-time, dai componenti per sistemi operativi ai software di grafica e musica, dalle app per cellulari ai sistemi per supercomputer. Praticamente, C++ è ovunque.
Le variabili
[modifica]Il linguaggio C++ prevede l'utilizzo di variabili, ovvero di valori che possono essere inseriti da tastiera (input) o elaborati dal programma e stampati a video (output). In base alla tipologia di variabile esistono differenti termini utilizzati:
- int = corrisponde a variabili alfabetiche come parole o lettere
- float = corrisponde a variabili numeriche con valori decimali
- char = corrisponde a variabili alfanumeriche basata su codice ASCII
Ciclo If/Else
[modifica]Il ciclo If/Else è un comando utilizzabile per imporre la scelta di una condizione sulla base di due o piu opzioni; alla scelta di una determinata condizione corrisponde una azione univoca.
Ciclo For
[modifica]Il ciclo for è un comando in grado di far ripetere una o più azioni per un numero determinato di volte, definito da una variabile prestabilita. L'utilizzo di tale strumento permette di non dovere ripetere molteplici volte lo stesso comando nel codice e di determinare quante ripetizioni avverranno prima dell'arresto.
Funzioni di testo
[modifica]Nel linguaggio C++ sono presenti due funzioni di testo, una necessaria a ricevere variabili dall'utente (input) ed una necessaria a stampare a video (output), e quindi proporre all'utente una variabile di qualsiasi tipo.
- cout<<"testo": è la funzione di output che permette di stampare a video ed imporre al programma di mostrare all'utente una determinata variabile.
#include <iostream> // libreria input output
using namespace std; // uso dello spazio dei nomi standard (per evitare di mettere std:: prima di ogni comando)
int main()
{
cout << "Hello World!"<<endl;
return 0; // valore di ritorno del programma
}
- cin>>variabile: dopo aver definito la tipologia, questa funzione di input permette al programma di ricevere una o piu variabili immesse dall'utente.
L'intestazione iniziale
[modifica]Per permettere ad un programma C++ di funzionare correttamente è necessario includere all'inizio di ogni codice
Comando Return 0
[modifica]Il programma
[modifica]Come nasce l'idea
[modifica]Il programma nasce dalla volontà frequente dei giovani di comunicare in un linguaggio segreto, e protetto, conosciuto soltanto dal mittente e destinatario. La scelta di utilizzare il linguaggio C++ è motivata dalla semplicità e dalla rapidità con cui tale codice permette di creare azioni che risulterebbero altrimenti complicate e molto lunghe.
Obiettivi
[modifica]L'obiettivo principale del programma è, tramite l'utilizzo del linguaggio C++, la codifica di parole con due differenti sistemi di criptaggio. Sono state scelti il cifrario di Cesare e il cifrario a trasposizione numerica perché entrambi molto semplici ed intuitivi, sono infatti basati sulla traslazione dell'alfabeto e della conversione delle lettere in numeri secondo uno schema ben definito.