Schermata 2016-08-20 alle 16.58.29

Appr. tecnico “La Sposa di Agosto”: Software di criptazione

Criptamento della password

Il software nella sua prima fase si compone di tre file:

  • un file index.php dove si andrà a prendere il primo nome e il secondo nome come input dall’utente;
  • un file split.js che si occupa dello splittamento delle stringhe che verranno generate;
  • un file postSplit.js che verrà richiamato quando verrà ricaricata la pagina.

In index.php pigliamo tramite la $_POST i nomi degli utenti che devono essere criptati.

//controllo dell’esistenza di nomeUtente
if(isset($_POST['inserisciAccesso'])) {

//prendere nome utente e per le fasi successive ne creiamo un’id univoco
$chiaveUnivocaUtente= uniqid();
$nomeUtente1 = $_POST['nomeUtente1'];
$nomeUtente2 = $_POST['nomeUtente2'];

Criptiamo tramite l’algoritmo blowfish

//passare hash format
$formatoHash1 = “$2y$10$”;
$formatoHash2 = “$2y$11$”;

$salt1 = “Salta10CaratteriAggiuntaCaratteri”;
$salt2 = “Salta111CaratteriAggiuntaCaratteri”;

echo “Lunghezza1: ” .strlen($salt1);
echo “, Lunghezza2: ” .strlen($salt2); //Lunghezza1: 33, Lunghezza2: 34

$aggiuntaPerCrypt1 = $formatoHash1 . $salt1;
$aggiuntaPerCrypt2 = $formatoHash2 . $salt2;

Utilizziamo la funzione crypt() di php per completare la criptazione:

$hash1 = crypt($nomeUtente1, $aggiuntaPerCrypt1); //$2y$10$Salta10CaratteriAggiuejyT6ppHHOr/zgAl7cyWxdvvYCeU4bOa
$hash2 = crypt($nomeUtente2, $aggiuntaPerCrypt2); //$2y$11$Salta111CaratteriAggiuzCVMbFIS7BGJgCIU8zoUcHCVtEKbuxS

Passaggio da PHP a Javascript

Prendiamo i due valori (i nomi criptati) andandoli ad inserire come input hidden all’interno della parte html del file .php, e li richiamiamo tramite una semplice echo:


In Split.js utilizziamo una function javascript che si avvia allo start del software. Analizziamo il codice passo dopo passo:

(function(){

Prendiamo i valori dagli input hidden utilizzando jQuery e prendendo solo la sottostringa dal 28 carattere,quindi il succo della criptazione
var stringa1 = $(‘#hash1′).val().substring(28);
var stringa2 = $(‘#hash2′).val().substring(28);

Inizializzamo un’Array subStr globale
var subStr = new Array();

Controlliamo che esista almeno una stringa effettiva (visto che questa function si avvia sempre…)
if(stringa1 != undefined && stringa1.trim() != “”) {

Creiamo l’array per prendere random il valore del numero di stringhe e il numero di caratteri che devono formare una stringa
var arrayDiSplittamento = [2,3,4,5,6];

Ne prendiamo random i valori
var numeroCaratteriStringa1 = arrayDiSplittamento[Math.floor(Math.random() * arrayDiSplittamento.length)];
var numeroConteggioStringhe1 = arrayDiSplittamento[Math.floor(Math.random() * arrayDiSplittamento.length)];

var numeroCaratteriStringa2 = arrayDiSplittamento[Math.floor(Math.random() * arrayDiSplittamento.length)];
var numeroConteggioStringhe2 = arrayDiSplittamento[Math.floor(Math.random() * arrayDiSplittamento.length)];

Richiamiamo le function di splittaggio e attiviamo la schermata
split(stringa1, numeroCaratteriStringa1,numeroConteggioStringhe1, 1);
split(stringa2, numeroCaratteriStringa2,numeroConteggioStringhe2, 2);
attivaSchermata(subStr);
}

function split(str1, numeroChar, numeroStr, numeroUtente) {
var conteggio = numeroChar;

var inizioStr = 0;
var numeroStringa = str1.length;
var res = str1;

Carichiamo il subStr con un while loop, quando raggiunge il numero massimo di subStr considerato dal numero randomico passato usciamo da suddetto ciclo while:
while(numeroStringa != 0) {
var porzioneDaAggiungere = res.substring(inizioStr, conteggio)
subStr.push(porzioneDaAggiungere);
if(subStr.length == numeroStr) {
attivaSchermata(subStr,numeroUtente);
return;
}
res = res.replace(porzioneDaAggiungere,”);
numeroStringa = numeroStringa – conteggio;
console.log(“processing ” +numeroUtente+”:” +numeroStringa+”…risultato:” +porzioneDaAggiungere);
}

}

 

Prima versione dell’algoritmo su http://www.storialab.it/softwareCriptazione/index.php (pare non funzioni con stringhe troppo lunghe)

Schermata 2016-08-20 alle 16.58.29 Schermata 2016-08-20 alle 17.02.54 Schermata 2016-08-21 alle 06.21.16

 

da fare:

- aggancio con il database (parte II);
- inserire più logica di controllo sui dati di ritorno (parte II);
- applicare nuova grafica alla pagina (parte III).



'Appr. tecnico “La Sposa di Agosto”: Software di criptazione' have no comments

Be the first to comment this post!

Would you like to share your thoughts?

Your email address will not be published.