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
modificaCon 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
modificaCifrario di Cesare
modificaIl 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
modificaUn 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++
modificaIn 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
modificaIl 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
modificaIl 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
modificaIl 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
modificaNel 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
modificaPer permettere ad un programma C++ di funzionare correttamente è necessario includere all'inizio di ogni codice
Comando Return 0
modificaIl programma
modificaCome nasce l'idea
modificaIl 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
modificaL'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.