[:it]TPSIT: crittografia –>SSL[:]

[:it]

Lucia Lorenzon

Il protocollo SSL (Secure sockets Layer) gestisce la crittografia dei messaggi in Internet e delle comunicazioni WEB.

Comunicazione cifrata con SSL

L’amministratore genera le chiavi private degli utenti:

openssl genrsa -out marcello.pem 2048

openssl genrsa -out francesco.pem 2048

i file con estensione .pem contengono una chiave provata secondo l’algoritmo RSA di lunghezza 2048 bit.

PEM sta per Privacy Enhanced Mail che è lo standard per i certificati di cifratura e non solo per i messaggi di posta elettronica.

Dalle chiavi private genero le chiavi pubbliche

openssl rsa -in marcello.pem -out marcello.pub -outform PEM -pubout

openssl rsa -in francesco.pem -out francesco.pub -outform PEM -pubout

A marcello e francesco vengono consegnate le chiavi la chiave privata e la chiave pubblica invece viene distribuita agli utenti.

Adesso marcello crea un semplice messaggio:

echo “ciao francesco come stai?” >messaggioM

Adesso marcello cifra il messaggio con la chiave pubblica di francesco e produce in output il file cifrato B che viene inviato a Bob.

openssl rsautl -encrypt -inkey francesco.pub -pubin -in messaggioM -out cifratoF

Adesso francesco decifra il messaggio ricevuto con la sua chiave privata e produce il documento in chiaro chiaroF

openssl rsautl -decrypt -inkey francesco.pem -in cifratoF -out chiaroM

Si osservi che questa operazione garantisce solo la segretezza del messaggio (solo francesco può leggere il messaggio), ma non fornisce alcuna certezza sull’identità del mittente, perchè la chiave pubblica di francesco può essere usata da chiunque.

Per garantire l’autenticità del documento si possono usare i comandi SSL per firmare i documenti:

marcello firma il documento usando la sua chiave privata e produce il documento firmatoM che viene inviato a francesco

openssl rsautl -sign -inkey marcello.pem -in messaggioM -out firmatoM
adesso francesco verifica utilizzando la chiave pubblica di marcello per verificare il documento e visualizzarlo in chiaro.

francesco@francesco-Extensa-5620:/home/programmatori$ openssl rsautl -verify -inkey marcello.pub -pubin -in firmatoM
ciao francesco come stai?[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]TPSIT: campo induzione magnetica di un solenoide[:]

[:it]Si è visto che le linee di forza di un campo elettrico vanno dalle cariche positive a quelle negative o magari, in alcuni casi, vengono da oppure vanno verso l’infinito.

Le linee di forza di un campo magnetico sono linee chiuse, concatenate con la corrente. La ragione di ciò è che il campo magnetico non è originato da poli magnetici. Questo tipo di campo, che non ha sorgenti puntiformi, si dice solenoide.

Il campo induzione magnetica al centro risulta:

B=\cfrac{\mu _{0}IN}{L}

con N numero di spire o avvolgimenti, L lunghezza del solenoide.[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]TPSIT: campo induzione magnetica di una corrente rettilinea, forze tra correnti[:]

[:it]Il campo induzione magnetica di un conduttore rettilineo infintamente lungo percorso da corrente è inversamente proporzionale alla distanza R e le linee di forza sono cerchi concentrici con la corrente e perpendicolari ad essa.

Tale relazione è chiamata formula di Biot Savart.

\vec{B}=\cfrac{\mu _{0}I}{2\pi R}\vec{u}_{\theta }

Componendo la formula precedente e la formula di Lorentz ho:

\vec{F}=-\vec{u}_{R}\cfrac{\mu _{0}II^{'}}{2\pi R}L^{'}

Due correnti parallele nello stesso verso si attraggono l’una all’altra con eguali forze.

Due  correnti parallele con versi opposti si respingono.[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]Python: creare eseguibili[:]

[:it]

alexander averin

Per distribuire le nostre applicazioni il più delle volte risulta “scomodo” dare il file .py anche perchè per poter funzionare l’utente deve aver installato python.
Se specialmente l’utente a cui dobbiamo dare a nostra applicazione usa Windows è più comodo passargli un file .exe
Per creare un eseguibile(exe) scarichiamo il modulo py2exe.
una volta installato apriamo il programma che dobbiamo convertire in eseguibileed all’inizio del file aggiungiamo queste righe:

from distutils.core import setup
import py2exe
setup(console=[‘NomeFile.py’])

salviamo il nostro file con il nome setup.py e dal terminale(per utenti unix) o da cmd.exe(per utenti Windows) ci portiamo nella directory dove si trova il nostro file e scriviamo:

python setup.py py2exe

compariranno un po di scritte ed alla fine se abbiamo fatto tutto correttamente dentro la directory del nostro file dovremmo avere due cartelle build e dist ,il nostro eseguibile si troverà all’interno della cartella dist.
Per testare il funzionamento dell’eseguibile appena creato sempre da terminale ci portiamo dentro la cartella dist e digitiamo:

NomeEseguibile.exe[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]HTML: il primo programma[:]

[:it]

alexander averin

HTML è di gran lunga il linguaggio più utilizzato per la creazione delle pagine in rete.

Il codice scritto in HTML deve trovarsi in un file con estensione .htm o .html per mandarlo in esecuzione, basta indicare il nome del file, insieme al percorso su disco, nella finestra delle URL del browser.

Ecco il primo programma

<html><head>
</head><body><h1>
<br>
<br>
<br>
<center>
Buongiorno amici!
</center>
</h1>

</body></html>

salvare il file con estensione .htm.

Per prima cosa si è dichiarato che si sta scrivendo in html

<HTML>

Si sta inserendo del materiale che deve risultare nella testata di pagina, cioè nello heading un concetto che si vedrà più avanti: per ora ci basti dire che è una sorta di etichetta che indica un comando, detto tag:

<HEAD>

vogliamo poi che la scritta sia di formato grande: il tag <H> permette di impostare 6 diversi formati, da H1 ad H6 di dimensione decrescente.

<BR> significa andare a capo

<CENTER> significa centrare il testo

Fatto ciò, ci si deve ricordare di chiudere, in ordine inverso, cioè partendo dall’ultimo tag aperto, tutti i tag che hanno la necessità di una controparte; nel nostro caso tutti meno che <BR>

</CENTER>

</HEAD>

</HTML>

Commenti

<!– e –> permette di inserire dei commenti.[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]HTML: Web editor[:]

[:it]

romero britto

romero britto

I programmi di web editor si suddividono in due categorie:

  • web editor non visuali: facilitano la scrittura del codice che però non viene generato automaticamente. Per esempio colorano alcuni termini specifici in maniera differente rispetto al resto del testo, completano automaticamente il codice oppure segnalano gli errori di sintassi.
  • web editor visuali: generano automaticamente il codice html utilizzando un’interfaccia visuale. Questi programmi vengono indicati con l’acronimo WYSIWYG (What you See Is What You Get) per indicare ceh in ogni istante viene visualizzato l’aspetto finale del sito.

Editor testuali:

Notepad++

Compatibile con Windows, completamente gratuito, supporta diverse lingue ed ha un’interfaccia grafica molto intuitiva. Supporta numerosi linguaggi tra cui: HTML, PHP, ASP, SQL, Java, Javascript.

PSPad

Supporta diverse lingue tra cui l’italiano, è gratuito e compatibile con Windows. Caratteristiche principali: client ftp per modificare i file in remoto, gestione di progetti, editor esadecimale completo, la libreria tidy integrata consente di formattare e verificare il codice HTML e di convertirlo in XHTML, XML e CSS, correzione automatica, modifica di file di testo di qualsiasi dimensione e comprende un registratore di macro.

UltraEdit

Si tratta di un editor HTML avanzato, sul sito è disponibile una versione di prova, supporta Windows 64 bit, supporta diverse lingue, è disponibile una versione Linux ed è in sviluppo una versione per Mac. Caratteristiche principali: editor esadecimale, supporta altri linguaggi (PHP, Perl, Java e Javascript), syntax highlighting, supporto unicode, client ftp per modificare file in remoto, toolbar con funzioni HTML preconfigurate, dispone di template e lista di funzioni ad albero con parametri, variabili e proprietà.

Editor Vsuali

Nvu (versione 1.0). Completamente gratuito, compatibile con Windows, è un editor WYSIWYG ideale anche per chi non conosce il linguaggio HTML. Supporta XML, Javascript e CSS, è disponibile in italiano, è dotato di un’interfaccia gradevole e contiene tutte le funzioni dei principali concorrenti (che però necessitano di licenza). E’ possibile scaricare il codice sorgente poichè l’editor è open source e si possono apportare tutte le modifiche desiderate.

Adobe Dreamweaver CS5. E’ compatibile sia con Windows che con Mac, editor che supporta più linguaggi tra cui (HTML, XHTML, CSS, PHP, Ajax, XML, Javascript, Coldfusion, ASP). Caratteristiche principali: supporto CMS integrato, ispezione CSS, suggerimenti su codice PHP, supporto per Subversion, suggerimenti sul codice per siti specifici, pagine di avvio CSS, semplice configurazione dei siti, integrazione con Adobe BrowserLab, compatibilità con più browser e utilizzo dei più noti framework CSS. Sul sito è possibile scaricare una versione di prova oppure si può comprare una licenza per circa 574 euro.

Blue Voda Website Builder (versione 11.4g). Vanta più di 3,5 milioni di download, è completamente free ed compatibile con Windows. Veramente semplice da usare, si possono creare siti funzionali anche se non si conosce l’HTML, al suo interno sono presenti alcuni template già fatti, è presente una funzione che consente di mettere online il proprio sito senza aver alcun programma ftp. Anche un bambino potrebbe riuscire a costruire il proprio sito con questo editor, sul sito del produttore inoltre si trovano videotutorial e molti templates.

 [:]

Pubblicato in Senza categoria | Lascia un commento

[:it]HTML: introduzione[:]

[:it]

romero britto

La tecnologia software mette a disposizione gli strumenti per realizzare con facilità pagine in formato Web, ossia pronte per essere caricate su un server internet e visualizzabili con un browser dagli utenti che si collegano; molte aziende offrono la possibilità di creare il proprio sito Internet gratuitamente, fornendo lo spazio su un server e, in alcuni casi, anche gli strumenti necessari per la creazione delle pagine Web.

L’insieme delle pagine che si riferiscono a uno stesso utente, a uno stesso argomento o azienda forma un sito internet o sito Web.

Le pagine da pubblicare su Internet sono realizzate usando il lingaggio HTML (HyperText Markup Language), in modo che possano essere correttamente interpretate dal browser e visualizzate in forma grafica.

Per la costruzione di un sito, è sufficiente utilizzare un programma qualsiasi di videoscrittura.[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]C++: soluzione alla verifica[:]

[:it]

  • alexander averin

    alexander averin

    da notare l’uso delle variabili globali e locali

  • le funzioni prototipo
  • l’iterazione

#include <iostream>
using namespace std;

string prodotto;
string prodottomassimo;
const float k=100;

int maggiore(int a,int b);
float funzionecosto(float prezzo,int max);
bool probabilesconto(float costotoale);
float sconto(float costototale);

int main()
{

int n,max;
float costototale,prezzo,finale;
max=0;
cout<<“Inserimento prodotti”<<“\n”;
cout<<“0 – uscita”<<“\n”;
cout<<“Quantita: “;
cin>>n;
while (n!=0)
{
cout<<“Prodotto: “;
cin>>prodotto;
max=maggiore(max,n);
cout<<“Quantita: “;
cin>>n;
}
cout<<“Il prodotto maggiormente venduto risulta: “<<prodottomassimo<<” con “<<max<<” pezzi”<<“\n”;
cout<<“Prezzo del prodotto: “;
cin>>prezzo;
costototale=funzionecosto(prezzo,max);
cout<<“Spesa complessiva: “<<costototale<<“\n”;
if (probabilesconto(costototale))
finale=sconto(costototale);
else
finale=costototale;

cout<<“Il prezzo finale del “<<prodottomassimo<<” risulta: “<<finale;

return 0;
}

int maggiore(int a,int b)
{
int maxmaggiore;

if (b>a)
{
maxmaggiore=b;
prodottomassimo=prodotto;
return maxmaggiore;
}
else
{
return a;
}

}

float funzionecosto(float prezzo,int max)
{
return prezzo*max;
}

bool probabilesconto(float costototale)
{
if (costototale > k)
return true;
else return false;

}

float sconto(float costototale)
{
return (costototale – costototale*20/100);
}[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]Esercizi sugli array[:]

[:it]

  1. alexander averin

    Leggere un array di 10 elementi tramite funzione prototipo

  2. Leggere e scrivere un array di 10 elementi tramite funzione prototipo
  3. dopo aver caricato in memoria un array di numeri interi con 10 componenti, calcolarne il prodotto delle componenti
  4. dopo aver caricato in memoria un array di numeri interi con 10 componenti, contare le componenti che hanno un valore superiore a 5
  5. dopo aver caricato in memoria un array di numeri interi con 10 componenti raddoppiare il valore solo delle prime tre componenti.
  6. Genera casualmente 10 numeri, memorizzali in un array ed effettua lo scambio tra il massimo ed il minimo elemento (supponendo che i valori dell’array siano tutti distinti tra loro).
  7. Leggi 10 numeri interi da tastiera e visualizzali in sequenza senza stampare uno stesso numero due volte. Per esempio: valori dell’array: 15,3,5,3,11,5,15,5,15,11; valori stampati: 15,3,5,11.
  8. Leggi N numeri e visualizzali a rovescio.
  9. Genera casualmente N numeri, scegli causalmente un elemento del vettore, e quindi effettua la partizione dell’array rispetto a quell’elemento (cioè elabora il vettore in modo tale che tutti gli elementi  a sinistra dell’elemento scelto siano minori o, al limite, uguali, mentre tutti gli elementi a destra siano sempre maggiori).
  10. dato un vettore di n interi, costruisci altri due vettori di dimensioni opportune, contenenti rispettivamente gli elementi del primo vettore non maggiori e maggiori di un intero dato.
  11. leggi n numeri, inseriscili in un vettore e individua gli elementi duplicativi visualizzandoli sullo schermo.

[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]C++: array o vettore[:]

[:it]

Alexander Averin

L’array è un insieme di elementi omogenei fra loro. Con una variabile possiamo indicare solo un dato, con l’array possiamo indicare tanti dati dello stesso tipo con un solo nome collettivo di variabile: l’identificatore dell’array. Gli elementi si distinguono uno dall’altro attraverso l’indice che viene assegnato nell’array, e che viene posto accanto all’identificatore dell’array.

Un array si definisce con la seguente dichiarazione:

tipo NomeArray[dimensione];

Alla normale dichiarazione di variabile si aggiunge semplicemente, tra parentesi quadre, il numero di elementi (dimensione) che compongono l’array.

Per esempio, la seguente dichiarazione crea un array di 10 elementi di tipo double:

double coeff[10];

L’indice è solitamente una variabile di tipo int.

Si può usare l’istruzione di asegnazione:

coeff[7]=7;

oppure produrre in output i valori delle componenti di un array con un ciclo for:

for (int i=0; i<10; i++){

cout<<coeff[i]<<endl;

}

La numerazione degli indici del linguaggio in C++ inizia da 0 e quindi, nel nostro esempio, gli elementi dell’array sono coeff[0], coeff[1], …,coeff[9].

E’ possibile inizializzare un array assegnando i valori alle componenti in fase di dichiarazione, come in questo esempio:

double numeri[3]={2.5,1.2,3.0}

I valori indicati all’interno delle parentesi graffe e separati dalla virgola.

Per passare un vettore ad una funzione è sufficiente indicare il nome del vettore ad esempio il seguente esempio legge un vettore e lo restituisce alla main, poi chiamo una funzione che lo stampa a video:

#include <iostream>
using namespace std;
const int MAX=100;
void ReadVector(int v[],int d);
void WriteVector(int v[],int d);

main(){
int d;
int v[MAX];

cout<<“Inserisci la dimensione del vettore: “;
cin>>d;
ReadVector(v,d);
WriteVector(v,d);
return 0;

}

Void ReadVector(int v[],int d)
{
for (int i=0;i<d;i++)
{
cout<<“Elemento di posto “<<i<<“: “;
cin>>v[i];
}

}

void WriteVector(int v[],int d)
{
for (int i=0;i<d;i++)
{
cout<<v[i]<<endl;
}
}

 [:]

Pubblicato in Senza categoria | Lascia un commento