sabato 31 ottobre 2015

Crittografia e logica matematica

Un sistema crittografico simmetrico si può programmare utilizzando le proprietà logiche del comando XOR

ricordo che
A XOR B = (A OR B) AND NOT ( A AND B)

oppure

 A XOR B = ( A AND NOT B)  OR ( B AND NOT A)

quindi
0 XOR 0 = 0
0 XOR 1 = 1
1 XOR 1 = 0

l'operatore XOR è l'inverso di se stesso: applicarlo in un senso o in un senso inverso non fa differenza

In Excel possiamo implementare una applicazione crittografica simmetrica con XOR per trasformare un testo in chiaro in bit in un testo cifrato e per ricondurre il testo cifrato in un testo in chiaro conoscendo la chiave crittografica:

testo 0 1 0 1 1 0 1 1
chiave 0 1 1 0 0 0 1 1
testo cifrato 0 0 1 1 1 0 0 0
testo cifrato 0 0 1 1 1 0 0 0
chiave 0 1 1 0 0 0 1 1
testo 0 1 0 1 1 0 1 1

Però è anche possibile usarla non per cifrare un intero testo (troppo lungo) ma per inviare al destinatario una nuova chiave crittografia da applicare ad un file con un algoritmo tipo AES . Naturalmente mittente e destinatario devono aver già concordato in presenza la prima chiave per poter generare tutte le altre una per ogni nuovo messaggio.

Ecco una possibile implementazione in C/C++


#include 
#include 

using namespace std;

int main(int argc, char *argv[])
{
int testo[100];
int password[100];
int critto[100];
int i;
int car;

cout << " quanti caratteri? ";
cin >> car;

for( i= 0; i <= car-1; i++)
{
cout<< "inserisci carattere " << i+1 << " del testo chiro o cifrato " << "  ";
cin >> testo[i];

}

for(i= 0; i <= car-1; i++)
{
cout<< "inserisci carattere " << i+1 << " della password  " << "  ";
cin >> password[i];

}


for(i= 0; i <= car-1; i++)
{
 critto[i] = testo[i] ^ password[i];

}

cout << "testo codificato o decodificato ";
for(i= 0; i <= car-1; i++)
{

cout << critto[i];

}
cout << "\n";
  
  system("PAUSE"); 
  return 0;
}

domenica 18 ottobre 2015

Numeri complessi, matrici e quaternioni

Spunti per una ricerca
Dato che ad ogni numero complesso possiamo associare una matrice
a+ib = [(a, -b), (b, a)]

tutte le operazioni con i numeri complessi si possono ridurre a operazioni matriciali, quindi anche chi ad esempio non dispone di una calcolatrice con i numeri complessi ma può usare le matrici può svolgere tutte le operazioni tranquillamente

Stesso discorso per i quaternioni z = a+bi+cj+dk
anche i quaternioni possono essere espressi come matrici 2x2 a coefficienti complessi o 4x4 a coefficienti reali. Quindi operando con le matrici possiamo lavorare con l'algebra dei quaternioni

vedere:
Quaternioni https://it.wikipedia.org/wiki/Quaternione

forma matriciale dei numeri complessi
https://it.wikipedia.org/wiki/Rappresentazione_dei_numeri_complessi#Rappresentazione_matriciale_dei_numeri_complessi

martedì 13 ottobre 2015

Distribuzione della chiave crittografica con i numeri irrazionali

Protocollo:
A e B si incontrano e concordano un numero irrazionale qualsiasi esempio c = sqrt(2)+ln(9)
Un  numero irrazionale è un numero decimale illimitato non periodico, quindi le sue cifre dopo la virgola sono infinite e distribuite casualmente.

Quando A vuole comunicare a B la chiave crittografica A invia a B una sequenza numerica che corrisponde alla posizione delle cifre decimali dopo la virgola del numero c. Quelle cifre indicate dalla posizione che A invia a B costituiscono la chiave crittografica numerica che può essere grande a piacere. Associando ai numeri le lettere dell'alfabeto + eventuali caratteri alfanumerici la chiave numerica si trasforma un una chiave alfanumerica. Se un un haker intercetta la comunicazione tra a e B non può dedurre la chiave crittografica perché non conosce il numero c e quello che intercetta sono solo le posizioni dei numeri decimali dopo la virgola della chiave.
Ogni volta A e B potranno comunicare con una chiave crittografica diversa una per ogni messaggio che non invieranno ma costruiranno e questo rende il sistema sicuro.  IL calcolo dei numeri decimali di un numero irrazionale si può fare facilmente con programmi matematici come il PARI/GP che possono fornire una precisione oltre la 200-esima cifra dopo la virgola

sabato 10 ottobre 2015

Utili disuguaglianze per la congettura ABC

x+y+z= S
xyz= n

quindi y = s-x-z

quindi sostituendo e imponendo  il delta maggiore di zero, ho (z-s)^2>= 4xy

D'altra parte
(x+y)^2 >= 4xy
(x+z)^2 >= 4xz
(y+z)^2 >= 4yz

e sommando membro a membro, dopo le dovute semplificazioni, otteniamo:
x^2+y^2+z^2 >= xy+xz+yz
risultato che può essere generalizzato a k termini