[:it]Java: cifrario di Cesare[:]

[:it]

Vincent Van Gogh

Questo programma, sviluppato da Alessandro Angelone studente indirizzo informatica e telecomunicazione, implementa il cifrario di Cesare:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

class Crypter {
private static final int matrix = 3;
private String word;
private String cryptedString;

private void cryptString() {
StringBuilder crypted = new StringBuilder(word);
for (int i = 0; i < crypted.length(); i++)
crypted.setCharAt(i, (char) ((int) (word.charAt(i)) + matrix));

cryptedString = crypted.toString();
}

public Crypter() {
word = null;
}

public Crypter(String word) {
this.word = word;
cryptString();
}

public void setWord(String word) {
this.word = word;
cryptString();
}

public String getCryptedString() {
return cryptedString;
}

public static String decryptString(String word) {
StringBuilder decrypted = new StringBuilder(word);
for (int i = 0; i < decrypted.length(); i++)
decrypted.setCharAt(i, (char) ((int) (decrypted.charAt(i)) – matrix));

return decrypted.toString();
}

public String decryptString() {
StringBuilder decrypted = new StringBuilder(cryptedString);
for (int i = 0; i < decrypted.length(); i++)
decrypted.setCharAt(i, (char) ((int) (decrypted.charAt(i)) – matrix));

return decrypted.toString();
}
}

public class cifrario_sostituzione {
public static void main(String[] args) {
Crypter k = new Crypter();// = new a(“Ciao”);

try (BufferedReader input = new BufferedReader(new InputStreamReader(System.in))) {
k.setWord(input.readLine());
} catch (IOException e) {
e.printStackTrace();
}

System.out.println(“Crypted: ” + k.getCryptedString());
System.out.println(“Decrypted: ” + k.decryptString(k.getCryptedString()));
System.out.println(“Static Decrypted: ” + Crypter.decryptString(“fldr”));
}
}

 [:]

Pubblicato in Senza categoria | Lascia un commento

[:it]Java: gestione classe vettore[:]

[:it]

Filippo Tommaso Marinetti

Questo programma, realizzato da Mirko Rossi, studente del corso di informatica e telecomunicazioni evidenzia come si può gestire la classe vector fornita da java.

import java.util.*;
public class VectorDemo {

public static void main(String args[]) {
// initial size is 3, increment is 2
Vector v = new Vector(3, 2);
System.out.println(“Initial size: ” + v.size());
System.out.println(“Initial capacity: ” + v.capacity());

v.addElement(new Integer(1));
v.addElement(new Integer(2));
v.addElement(new Integer(3));
v.addElement(new Integer(4));
System.out.println(“Capacity after four additions: ” + v.capacity());

v.addElement(new Double(5.45));
System.out.println(“Current capacity: ” + v.capacity());

v.addElement(new Double(6.08));
v.addElement(new Integer(7));
System.out.println(“Current capacity: ” + v.capacity());

v.addElement(new Float(9.4));
v.addElement(new Integer(10));
System.out.println(“Current capacity: ” + v.capacity());

v.addElement(new Integer(11));
v.addElement(new Integer(12));
System.out.println(“First element: ” + (Integer)v.firstElement());
System.out.println(“Last element: ” + (Integer)v.lastElement());

if(v.contains(new Integer(3)))
System.out.println(“Vector contains 3.”);

// enumerate the elements in the vector.
Enumeration vEnum = v.elements();
System.out.println(“\nElements in vector:”);

while(vEnum.hasMoreElements())
System.out.print(vEnum.nextElement() + ” “);
System.out.println();
}
}[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]Programmazione: esercizi sulle funzioni[:]

[:it]

  1. Vincent Van Gogh

    Definire una funzione che ripeta a video in tre righe diverse la stringa acquisita da tastiera.

  2. Organizzare una funzione che acquisisca da tastiera il lato di un quadrato e ne calcoli la misura dell’area e del perimetro
  3. Data la parabola, se ne calcoli il vertice, il fuoco, l’intersezione con gli assi. Le tre funzioni ricevono come parametri i coefficienti a,b,c e restituiscano il valore calcolato
  4. definire una funzione che abbia come parametro un numero intero positivo e che visualizzi la sequenza dei primi 5 numeri successivi al numero dato
  5. scrivere una funzione che abbia come parametri il numero dei valori e la loro somma e che calcoli la media aritmetica
  6. dati in input le età di tre persone, scrivere i dati acquisiti in ordine decrescente
  7. scrivere la funzione che restituisca l’età di una persona, conoscendo il suo anno di nascita (si consideri l’anno attuale come costante)
  8. scrivere una funzione che abbia come parametri il prezzo di vendita e la percentuale di sconto e che restituisca il prezzo scontato.
  9. scrivere una funzione che restituisca un valore booleano Vero o Falso, controllando se due rette, di cui si conoscono le equazioni, sono perpendicolari.

[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]C++: funzioni, seconda parte[:]

[:it]

vincent van Gogh

Perché una funzione ha la necessità che vengano definite delle variabili locali?Si può farne a meno?

Si sempre che si vuole che essa non venga usata per altri programmi.

Ad esempio il seguente programma

#include<iostream>
using namespace std;

void somma()
{
    c=a+b;
}

int main()
{
  int a=5;
   int b=7;
   int c;
somma();
  cout<<c<<endl;
  return 0;
}

In questo programma la funzione somma viene chiamata senza parametri ed usa le variabili definite nel main.

#include<iostream>
using namespace std;

int  somma(int a, int b)
{
c=a+b;
return c;
}

int main()
{
int d=5;
int e=7;
cout<<somma(d,e)<<endl;
return 0;
}

Il vantaggio è quello di poter usare la stessa funzione in altre programmi semplicemente copiandola.[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]C++: chiamata delle funzioni[:]

[:it]

Vincent van Gogh

Per usare una funzione di deve specificare il nome della funzione seguito dall’elenco, tra parentesi tonde, dei valori da assegnare ai parametri della funzione:

nome_della_funzione(elenco dei valori da passare ai parametri).

Ad esempio se voglio chiamare la funzione somma (nel post funzioni prima parte)

la chiamo come

c=Somma(3,4)

il main è la funzione principale ed infatti esso ha all’inizio la parole int e ritorna il valore zero infatti termina con return 0.[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]C++: le funzioni, prima parte[:]

[:it]

Vincent van Gogh

Funzione in matematica è uguale al concetto di funzione in informatica. Si dice anche che una funzione ritorna un valore.

  • Poiché una funzione ritorna un valore, occorre specificare, prima del nome, che identifica la funzione, il tipo del valore restituito.
  • Dopo il nome della funzione, le parentesi tonde servono a contenere l’elenco degli argomenti passati alla funzione, detti parametri.
  • Le istruzioni che formano la funzione sono definite dalle parentesi graffe e rappresentano il codice che viene eseguito alla chiamata della funzione.
  • Il corpo della funzione contiene, come ultima istruzione, la parola return seguita dal valore o dalla variabile o dal controllo alla funzione principale o, in generale alla funzione chiamante.
  • se il tipo della funzione non è specificato, si assume, in mancanza (per default), che il tipo sia int
  • se si vuole che la funzione non restituisca alcun valore, bisogna specificare, come tipo di dato restituito, il tipo void (in italiano vuoto privo)

Ecco un esempi di funzione

int Somma (int a, int b)
{
      int s;
      s= a+b;
      return s;
}

le due variabili a e b sono usate all’interno del programma.

void stampasomma (int a, int b)
{
       int s;
       s=a+b;
       cout<<s<<endl;
}

In questo caso la funzione non passa nulla.[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]TPSIT: RSA crittografia chiave asimmetrica[:]

[:it]

Monet

La chiave pubblica è composta da due numeri (pub,n)–> CONOSCIUTA DA TUTTI

La chiave privata da altri due numeri (pri,n)–> MANTENUTA SEGRETA

Dato m un carattere trasformato in decimale lo codifico mediante la seguente operazione:

c=m^{pub} mod(n)

con mod() la funzione che calcola il resto della divisione.

per decodificarlo uso:

m=c^{pri}mod(n)

pri e pub devono sottostare alle seguenti due regole:

n=a \cdot b

z=(a-1) \cdot (b-1)

pri non deve avere fattori in comune con z

pub deve soddisfare alla seguente relazione

(pub \cdot pri)mod(z)=1

Ad esempio:

si scelgano

a=17

b=5

si ottiene:

n=85 e z=64

si prenda ad esempio pri=5 e non ha fattori in comune con il 64 e poi risolvendo l’equazione:

(pub \cdot 5)mod(64)=1

si ottiene pub=13.

chiave pubblica (13,85) e chiave privata(5,85)

Applicata al seguente esempio:

Testo m m^{13} m^{13}mod(85)
E 5 1220703125 20
U 19 42052983462257059 49
R 16 4503599627370496 16
O 13 302875106592253 13
P 14 793714773254144 39
A 1 1 1

Si è spedito il messaggio: 20, 49, 16, 13, 39, 1

Adesso solo chi possiede la chiave privata può decodificare il messaggio:

Testo c c^{5} c^{5}mod(85) in chiaro
20 3200000 5 E
49 282475249 19 U
16 1048576 16 R
13 371293 13 O
39 90224199 14 P
1 1 1 A

[:]

Pubblicato in Senza categoria | 2 commenti

[:it]TPSIT: crittografia a chiave asimmetrica[:]

[:it]

Monet

Si chiama anche crittografia a chiave pubblica; si utilizzano due tipi di chiavi una pubblica ed una privata.

La codifica avviene con la chiave pubblica, la decodifica con quella privata.

L’utilizzo della coppia di chiavi determinano vari livelli di sicurezza:

Garanzia identità del mittente

Mittente A usa la chiave privata per codificare il messaggio–> Tutti i mittenti B usano la chiave pubblica del mittente per decifrare il messaggio

Tutti leggono il messaggio e viene garantita solo l’identità del mittente

Chiave privata Chiave pubblica
codifica msg decodifica msg certezza mittente

Garanzia della segretezza

La chiave pubblica del destinatario è conosciuta e viene usata per codificare il messaggio, il mittente può decifrarlo perché usa la sua chiave privata.

In questo caso tutti possono codificare il messaggio con la chiave pubblica del destinatario ma non si ha la certezza del mittente. Il messaggio rimane comunque segreto perché solo chi è in possesso della chiave privata può decifrarlo

Chiave privata Chiave pubblica
decodifica msg codifica msg solo segretezza messaggio non certezza mittente

Garanzia della segretezza e del mittente

il mittente codifica con la sua chiave privata e viene codificato ancora con la chiave pubblica del destinatario, il destinatario usa la sua chiave privata per decodificare il messaggio  e lo decodifica con la chiave pubblica del mittente.

chiave privata chiave pubblica
codifica/decodifica codifica/decodifica

Il vantaggio del sistema crittografico a chiave asimmetrica è che il mittente e il destinatario non devono condividere una chiave segreta. I mittenti dei messaggi devono solo conoscere la chiave pubblica del destinatario, mentre la chiave privata deve essere conservata in modo segreto dal destinatario.

La chiave privata e la chiave pubblica sono correlate mediante un opportuno algoritmo matematico.[:]

Pubblicato in Senza categoria | Lascia un commento

Protetto: [:it]DB[:]

Il contenuto è protetto da password. Per visualizzarlo inserisci di seguito la password:

Pubblicato in Senza categoria | Inserisci la tua password per visualizzare i commenti.

[:it]Python: esempio di funzione[:]

[:it]Questo brevissimo programma ha racchiuso il nucleo della gestione di funzioni con il linguaggio Python:

def area(a,b):
           c=a*b
          return c

f=input(“base”)
f=int(f)
g=input(“altezza”)
g=int(g)
d=area(f,g)
print (“area: “,d)

Da notare la sintassi per la definizione di finzione,

come essa viene chiamata.[:]

Pubblicato in Senza categoria | Lascia un commento