Encryption

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hey all.

I am trying to get encryption working for my site.

I have found some code and set up a test bed for it, but it fails to return
the same value after the 26th item. I was hoping someone could take a look
and maybe tell me why? There is very little help out there for encryption.
If you know of a working example/tutorial, can you please reply with a link?

Many thanks,

Darren

<?
    global $arrAlphaVals;
    global $intTot;

    $intTot = 5000;
    $arrAlphaVals = array();

    function init()
    {
        global $arrAlphaVals;
        global $intTot;
        for ($i=0;$i<$intTot;$i++)
        {
            $arrAlphaVals[$i] = sprintf("%016s", strtoupper(dechex($i)));
        }
        return $arrAlphaVals;
    }
    function main()
    {
        global $arrAlphaVals;
        global $intTot;
        init();

        $arrError = array();
        echo "Encryption test<br>\n";
        for ($i=0;$i<$intTot;$i++)
        {
            if ($i%1000 == 0)
            {
                echo $i."<br>";
                flush();
            }
            $strInit = $arrAlphaVals[$i];
            $strEncVal = encryptIt($strInit);
            $strOut = decryptIt($strEncVal);
//echo "In: ".$strInit.", Enc: ".$strEncVal.", Out: ".$strOut."<br>";
            if ($strOut != $strInit)
            {
                $strError .= "Failed on: ".$i."<br>\n";
                $arrError[$strInit] = $strOut;
            }
        }
        if (sizeof($arrError) > 0)
        {
            // There were errors
            foreach ($arrError as $strKey => $strVal)
            {
                echo "Input: '".$strKey."' failed with result
'".$strVal."'<br>\n";
            }
            echo "<hr>".$strError;
        }
        echo "<hr>Tested ".$i." cases. Done.<br>\n";
    }
    function encryptIt($strIn)
    {
        $key = "biteme";
        $strRet = _mencrypt($strIn, $key);
        return $strRet;
    }
    function decryptIt($strIn)
    {
        $key = "biteme";
        $strRet = _mdecrypt($strIn, $key);
        return $strRet;
    }
    function _mencrypt($input,$key)
    {
        $input = str_replace("\n","",$input);
        $input = str_replace("\t","",$input);
        $input = str_replace("\r","",$input);
        $key = substr(md5($key),0,24);
        $td = mcrypt_module_open ('tripledes', '', 'ecb', '');
        $iv = mcrypt_create_iv (mcrypt_enc_get_iv_size ($td), MCRYPT_RAND);
        mcrypt_generic_init ($td, $key, $iv);
        $encrypted_data = mcrypt_generic ($td, $input);
        mcrypt_generic_deinit ($td);
        mcrypt_module_close ($td);
        return trim(chop(base64_encode($encrypted_data)));
    }

//$input - stuff to decrypt
//$key - the secret key to use

    function _mdecrypt($input,$key)
    {
        $input = str_replace("\n","",$input);
        $input = str_replace("\t","",$input);
        $input = str_replace("\r","",$input);
        $input = trim(chop(base64_decode($input)));
        $td = mcrypt_module_open ('tripledes', '', 'ecb', '');
        $key = substr(md5($key),0,24);
        $iv = mcrypt_create_iv (mcrypt_enc_get_iv_size ($td), MCRYPT_RAND);
        mcrypt_generic_init ($td, $key, $iv);
        $decrypted_data = mdecrypt_generic ($td, $input);
        mcrypt_generic_deinit ($td);
        mcrypt_module_close ($td);
        return trim(chop($decrypted_data));
    }
    main();
?>

The original encryption and decryption code came from Jeremy Stansfield
(http://www.weberdev.com/get_example-3752.html)

Thanks again!

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux