Visualizzazione risultati 1 fino 13 di 13

Discussione: Crittografia a doppio senso

  1. #1
    Guest

    Predefinito

    Scusate ma anche io avrei bisogno di un crypt a doppio senso!
    L'utilità sta nel fatto che creo una chiave che conosco io e cripto i dati per non farli leggere in chiaro sul database, poi quando voglio farli visualizzare all'utente li decripto con la chiave.... però non so farlo, mi date una mano?

  2. #2
    Guest

    Predefinito

    hai letto la data di apertura del thread?? 17-02-2005.

    Non riesumare thread troppo vecchi, ma aprine uno nuovo, ora splitto io la discussione

  3. #3
    Guest

    Predefinito

    LOL
    Scusa, voi dite sempre che bisogna cercare nel forum prima di postare ed io avevo trovato qlc che era simile a quello che volevo, ho semplicemente pensato che così sarebbe stato più facile capire quello che volevo.

    Si vede che ho pensato male!

  4. #4
    Guest

    Predefinito

    allora esistono delle librerire apposite molto efficaci (http://www.php.net/manual/it/ref.mcrypt.php) ma sua ltervista non sono installate in alternativa portsti usare delle classi apposite...ora vedo se trovo qlcosa...

    edit:
    ho trovato questo:
    http://www.phpclasses.org/browse/package/2764.html
    legig e vedi se va bene...sfortunatamnete è scritto in php5, ma se ti paice posso tradurlo...
    Ultima modifica di SoulHome : 19-06-2006 alle ore 17.48.37

  5. #5
    Guest

    Predefinito

    Non so se possa interessare altri, ma posto comunque una possibile soluzione.

    Esiste il cryptaggio per XOR che è reversibile, lo svantaggio è che essendo appunto reversibile bisogna creare una chiave che non sia facilmente riconoscibile.

    In pratica si esegue un:

    X ^ Y = Z dove X sono i dati da criptare e Y è la chiave, mentre per tornare indietro basta effettuareun
    Z ^ Y = X con la stessa chiave.

    se prendete un valore Y associato a X e lo md5() ritengo che sia una chiave abbastanza difficile da trovare, inoltre se cambiate il valore associato a Y allora credo proprio che i soli a ritrovare il valore sarete voi.

    Però ho un problema, come inserisco il codice cryptato su mysql? (può contenere ' e uscire dalla stringa)?

    Aspetto risposta, grazie

  6. #6
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Citazione Originalmente inviato da PIG
    ...
    se prendete un valore Y associato a X e lo md5() ritengo che sia una chiave abbastanza difficile da trovare, ...
    Non credo che sia una buona idea... md5() è infatti una funzione di hashing e non di codifica: la differenza è che mentre per una funzione di codifica esiste la sua inversa, con quella di hashing questo non è garantito. Pertanto, non c'è nemmeno garanzia di trovare la chiave inversa...

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  7. #7
    Guest

    Predefinito

    Scusa, mi sono spiegato male.
    L'hashing è univoco, il che vuol dire che se faccio un md5 della chiave e con l'hash faccio la codifica, se voglio ritrovare il valore che ho codificato posso ri-hashare la chiave e decodificare con l'hash. Il vantaggio sta nel fatto che le chiavi possono essere "banali" e quindi ritrovate, l'hash non lo è mai (tranne strani casi mooolto fortuiti).

    Credo anche di avere risolto per quanto riguarda la trascrizione su mysql.
    Allora la procedura è questa:

    Creo una chiave $key che sia associata ai dati $key($dati), la modifico con un algoritmo di mia scelta e la crypto $new_key=md5($key_modified);.

    A questo punto prendo i dati e li crypto con la chiave:
    $data_crypted=$data^$new_key;

    questa variabile può contenere caratteri speciali non graditi da mysql in una query e visto che si tratta di un codice non si può modificarlo.

    Una possibile soluzione è di codificare anche questo:
    $data_mysql=base64_encode($data_crypted);
    e scriverlo sul mysql

    Quando invece rileggo i dati:
    $data_query=base64_decode($data_mysql);

    rigenero la chiave $new_key; come prima e decripto:

    $data=$data_query^$new_key;

    Che ne dite?
    E' fattibile o vi sono faglie che non vedo?
    Grazie per l'aiuto

  8. #8
    Guest

    Predefinito

    bhè...l'operatore bitwise XOR non è un vero e prorpio sistema di encoding...generalmente viene usato ad altri scopi...comunque potrebbe andare bene...se non fosse per il fatto che se la stringa da criptare è più lunga della chiave vi è una notevole perdita di dati
    e poi lencode base64 aumenta del 30% la dimensione dei dati...non so quanto ti convenga...

  9. #9
    Guest

    Predefinito

    La chiave sei tu che la fai... ci si può giocare sopra con copia incolla di più parti fino a ricoprire il codice da criptare (i modi insomma ci sono).
    Per quanto riguarda l'encoding hai ragione... non avresti un consiglio da dare?

    Ho bisongo di trasformare il criptato in qualcosa che mysql accetti senza problemi.

    Qualcuno ha un'idea?

  10. #10
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    Lo so sono un impiccione ma devo chiederti una cosa.
    A cosa ti serve criptare il DB?
    Cioè i dati da visualizzare agli utenti li difendi via script.
    Se la tua paura è che qualcuno possa entrare nel tuo spazio e leggetri i dati, criptare il DB non risolve nulla dato che potrebbe anche leggerti gli script e quindi trovare la pasword per decriptare i dati.
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  11. #11
    Guest

    Predefinito

    l'unica alternativa al base64 sarebbe uuencode...ma è peggio....forse potressti provare a sostituire "manualmente" i caratteri non stampabili usando qualcosa tipo:
    $noprintable=array(chr(1),chr(2),...);
    $printable=array("[SOH]", "[STX]",...);
    $data_query=addsleshes(str_replace($noprintable,$p rintable,$data));
    ma non so quanto sia migliroe di base64...


    edit
    se la password la inserisce lui di volta in volta e non la inserisce negli script anche se qualcuno guadanga l'accesso dovrà provare un po' di brute force...
    Ultima modifica di SoulHome : 20-06-2006 alle ore 16.40.27

  12. #12
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    Si, ma inq uesto modo la sicurezza va a quel paese, dato che tutti gli utenti dovrebbero avere la stessa password, basta che qualcuno la perda ed addio tutto.

    Aggiungo anche che base 64 è una codifica, quindi non cripti nulla.
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  13. #13
    Guest

    Predefinito

    La codifica 64 la faccio esclusivamente per rendere leggibile a Mysql il codice che altrimenti potrebbe comprendere caratteri incomprensibili e non per cryptare. Per quanto riguarda il fatto di non utilizzare criptaggio perché inutile... ci penso su, in effetti non è poi così necessario... però mi fa piacere sapere che se mi leggono il database saranno costretti di andare a cercare la chiave nei codici. Non è che voglia fare una cryptografia perfetta, giusto impedire degli sbarbati di leggere tranquillamente quello che faccio.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •