Visualizzazione dei risultati da 1 a 4 su 4

Discussione: XOR logici

  1. #1

    XOR logici

    ciao a tutti,
    devo eseguire uno xor logico fra due numeri esadecimali.
    il fatto è che i due numeri vengono costruiti con dei metodi di decriptazione che non interessano per il fine della discussione.
    ci sono due funzioni che restituiscono i due numeri come stringa.

    Codice PHP:
    $var1 9807162534435221;
    $var2 "AAAAAAAAAAAAAAAA";
    return 
    bin2hex($var1 $var2); 
    il dato ritornato con una echo, però, è "xyqvpwstruurtssp"
    che non assomiglia neanche lontanamente a 32ADBC8F9EE9F88B che è ciò che dovrebbe essere (basta fare il calcolo con una calcolatrice scientifica).

    qualcuno sa darmi una mano per risolvere?
    io, sinceramente, non so bene neanche di che sto parlando... :S

  2. #2
    Gli errori che commetti:

    1. Gli integer in PHP non possono superare i 32 bit.
    2. Una stringa NON è un numero a meno che non si esegua un type cast od una conversione (es. hexdec()).

    Studiati questo codice:

    Codice PHP:
    <pre>
    <?php 

    $var1 
    '9807162534435221';
    $var2 'AAAAAAAAAAAAAAAA';

    $xored '';
    $count strlen($var1);
    for (
    $i 0$i $count$i++) {
        
    $v1 = (int)($var1{$i});
        
    $v2 = (int)hexdec($var2{$i});
        
    $xor = ($v1 $v2);
        
    $xored .= dechex($xor);
    }

    $xored strtoupper($xored);

    var_dump($var1);
    var_dump($var2);
    var_dump($xored);


    ?>
    </pre>

  3. #3
    ti ringrazio molto filippo.
    avevo notato che il problema era relativo alla lunghezza eccessiva degli integer, ma non ero comunque giunto ad una conclusione. adesso mi studio questo codice.

  4. #4
    scusami se ne approfitto, ma ho provato a cercare in lungo e in largo per la rete e non sono riuscito a venirne fuori.

    applicando xor a due diversi dati ottengo la chiave '32ADBC8F9EE9F88B839AA9AD52473081' che devo applicare al dato '1234567890123452' (questi sono solo esempi di cui conosco già il risultato, poi dovrò applicare il tutto a casi reali) usando 3DES (ecb).

    ingenuamente ho semplicemente usato
    Codice PHP:
    $key '32ADBC8F9EE9F88B839AA9AD52473081';
    $num '1234567890123452';
    $secret mcrypt_encrypt(MCRYPT_3DES$key$numMCRYPT_MODE_ECB);
    var_dump(bin2hex($secret)); 
    che però non mi da il risultato sperato.
    come dovrebbe funzionare?
    anche provando a trasformare chiave e dato in binario non ottengo il risultato che dovrei...

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.