Visualizzazione dei risultati da 1 a 4 su 4

Discussione: MessageDigest per php

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    79

    MessageDigest per php

    Salve a tutti, sto facendo un programma in php dove degli utenti si scambiano oggetti chiamati certificati. Ora io devo generare l'id di tale certificato tramite una funzione di hash.
    Ho il codice in Java e vorrei prima di tutto capirlo bene per poi"tradurlo in php":

    MessageDigest md = MessageDigest.getInstance("md5");
    md.update(sender.getBytes("UTF8"));
    md.update(receiver.getBytes("UTF8"));
    md.update(relationTypes.getBytes("UTF8"));
    md.update(Utils.objectToBytes(trustlevel));
    md.update(Utils.objectToBytes(timestamp));
    md.update(Utils.objectToBytes(distributionRules));
    md.update(Utils.objectToBytes(randomNumber));
    byte[] digest = md.digest();
    id = new BASE64Encoder().encode(digest);

    Da quanto ho capito fino ad ora col metodo update concateno semplicemente la serie di byte che passo come argomento. Digest dovrebbe calcolare la segnatura della serie di byte risultante, e BASE64Encoder trasforma il tutto in base 64. Ora mi interesserebbe fare il tutto in PHP.

    Io avevo in mente di concatenare tutte in una variabile $digest per poi usare la funzione md5($digest).
    E qui nascono i miei quesiti:

    - Come faccio a trasformare una stringa(come ad esempio sender e receiver) in una serie di byte?
    - Come faccio per fare la stessa cosa su un oggetto (come distributionRules)
    - E' giusto concatenare tutto in una variabile e usare md5()
    - Come faccio a codificare il risultato in base 64

    Qualcuno riesce a suggerirmi qualcosa?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230

    Re: MessageDigest per php

    Originariamente inviato da rizz1
    - Come faccio a trasformare una stringa(come ad esempio sender e receiver) in una serie di byte?
    prendi semplicemente la seguenza dei caratteri del tuo input codificato in utf8.
    - Come faccio per fare la stessa cosa su un oggetto (come distributionRules)
    serializzi l'ogetto, poi prendi la seguenza dei caratteri.


    nb: considera che in php per generare un md5, i bytes non ti interessano. puoi lavorare direttamente con le stringhe.

    - E' giusto concatenare tutto in una variabile e usare md5()
    si
    - Come faccio a codificare il risultato in base 64
    base64_encode()

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    79
    OK.... grazie mille...
    Quindi se ho capito bene dovrei fare una cosa del genere:

    $mex = $sender.$receiver.$relationType.serialize(timestam p).serialize(distributionRules) //ecc..
    $digest = md5()
    $id = base64_encode($digest);

    prendendo la stringa direttamente e x gli oggetti la serializzazione degli stessi ????

  4. #4
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    si, l'idea e' piu' o meno quella.

    non ho ben capito pero' perche' devi emulare quel codice java, e non usare una semplice cosa di php tipo
    $id_unico = md5(uniqid(rand(),true));

    Emulare in 2 linguaggi lo stesso codice ha senso solo quando devi produrre esattamente lo stesso risultato in entrambi i casi. Nel tuo caso non potresti mai farlo con quel codice, quindi non ha senso..

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.