CodeQuest - Hackathon PHP Creadiv 2016

accepta provocarea hackathon php

Hackathon 22 Octombrie 2016, Bucuresti, Connect hub

<?php if ( ! defined('BASEPATH')) exit('Trebuie sa treci de preselectie');

/**
 * CodeQuest 2016
 *
 * Hackaton PHP CREADIV
 *
 * @package    CodeQuest
 * @author     Creadiv si Connect Hub (https://creadiv.ro si http://connecthub.ro) 
 * @copyright  Copyright (c) 2015, CREADIV (Best Web Image SRL)
 * @license    Inscrie-te in competitie prin formularul de mai jos
 * @link       http://www.codequest.ro/
 * @since      Version 2.0
 * @filesource    Vino intre 22 Octombrie 2016, pe Bd. Dacia nr. 99, et. 4, Connect Hub, Sector 2, Bucuresti (vis-a-vis de Piata Spaniei)
 */


class Codequest extends MY_Controller {

    function 
__construct()
    {
        
parent::__construct();
    }
    function 
_remap()
    {
        if (
$this->uri->total_segments()>1)
            
show_404();
        if ((
$method $this->uri->segment(1))=='')
            return 
$this->_index();
        
$method '_'.str_replace('-','_',$method);
        if (
method_exists($this$method))
        {
            return 
call_user_func_array(array($this$method), $params=array());
        }
        
show_404(); 
    }
    
    var 
$CI;
    var 
$encryption_key    '';
    var 
$_hash_type    'sha1';
    var 
$_mcrypt_exists FALSE;
    var 
$_mcrypt_cipher;
    var 
$_mcrypt_mode;

    
/**
     * Constructor
     *
     * Simply determines whether the mcrypt library exists.
     *
     */
    
public function __construct()
    {
        
$this->CI =& get_instance();
        
$this->_mcrypt_exists = ( ! function_exists('mcrypt_encrypt')) ? FALSE TRUE;
        
log_message('debug'"Encrypt Class Initialized");
    }

    
// --------------------------------------------------------------------

    /**
     * Fetch the encryption key
     *
     * Returns it as MD5 in order to have an exact-length 128 bit key.
     * Mcrypt is sensitive to keys that are not the correct length
     *
     * @access    public
     * @param    string
     * @return    string
     */
    
function get_key($key '')
    {
        if (
$key == '')
        {
            if (
$this->encryption_key != '')
            {
                return 
$this->encryption_key;
            }

            
$CI =& get_instance();
            
$key $CI->config->item('encryption_key');

            if (
$key == FALSE)
            {
                
show_error('In order to use the encryption class requires that you set an encryption key in your config file.');
            }
        }

        return 
md5($key);
    }

    
// --------------------------------------------------------------------

    /**
     * Set the encryption key
     *
     * @access    public
     * @param    string
     * @return    void
     */
    
function set_key($key '')
    {
        
$this->encryption_key $key;
    }

    
// --------------------------------------------------------------------

    /**
     * Encode
     *
     * Encodes the message string using bitwise XOR encoding.
     * The key is combined with a random hash, and then it
     * too gets converted using XOR. The whole thing is then run
     * through mcrypt (if supported) using the randomized key.
     * The end result is a double-encrypted message string
     * that is randomized with each call to this function,
     * even if the supplied message and key are the same.
     *
     * @access    public
     * @param    string    the string to encode
     * @param    string    the key
     * @return    string
     */
    
function encode($string$key '')
    {
        
$key $this->get_key($key);

        if (
$this->_mcrypt_exists === TRUE)
        {
            
$enc $this->mcrypt_encode($string$key);
        }
        else
        {
            
$enc $this->_xor_encode($string$key);
        }

        return 
base64_encode($enc);
    }

    
// --------------------------------------------------------------------

    /**
     * Decode
     *
     * Reverses the above process
     *
     * @access    public
     * @param    string
     * @param    string
     * @return    string
     */
    
function decode($string$key '')
    {
        
$key $this->get_key($key);

        if (
preg_match('/[^a-zA-Z0-9\/\+=]/'$string))
        {
            return 
FALSE;
        }

        
$dec base64_decode($string);

        if (
$this->_mcrypt_exists === TRUE)
        {
            if ((
$dec $this->mcrypt_decode($dec$key)) === FALSE)
            {
                return 
FALSE;
            }
        }
        else
        {
            
$dec $this->_xor_decode($dec$key);
        }

        return 
$dec;
    }

    
// --------------------------------------------------------------------

    /**
     * Encode from Legacy
     *
     * Takes an encoded string from the original Encryption class algorithms and
     * returns a newly encoded string using the improved method added in 2.0.0
     * This allows for backwards compatibility and a method to transition to the
     * new encryption algorithms.
     *
     * For more details, see http://codeigniter.com/user_guide/installation/upgrade_200.html#encryption
     *
     * @access    public
     * @param    string
     * @param    int        (mcrypt mode constant)
     * @param    string
     * @return    string
     */
    
function encode_from_legacy($string$legacy_mode MCRYPT_MODE_ECB$key '')
    {
        if (
$this->_mcrypt_exists === FALSE)
        {
            
log_message('error''Encoding from legacy is available only when Mcrypt is in use.');
            return 
FALSE;
        }

        
// decode it first
        // set mode temporarily to what it was when string was encoded with the legacy
        // algorithm - typically MCRYPT_MODE_ECB
        
$current_mode $this->_get_mode();
        
$this->set_mode($legacy_mode);

        
$key $this->get_key($key);

        if (
preg_match('/[^a-zA-Z0-9\/\+=]/'$string))
        {
            return 
FALSE;
        }

        
$dec base64_decode($string);

        if ((
$dec $this->mcrypt_decode($dec$key)) === FALSE)
        {
            return 
FALSE;
        }

        
$dec $this->_xor_decode($dec$key);

        
// set the mcrypt mode back to what it should be, typically MCRYPT_MODE_CBC
        
$this->set_mode($current_mode);

        
// and re-encode
        
return base64_encode($this->mcrypt_encode($dec$key));
    }

    
// --------------------------------------------------------------------

    /**
     * XOR Encode
     *
     * Takes a plain-text string and key as input and generates an
     * encoded bit-string using XOR
     *
     * @access    private
     * @param    string
     * @param    string
     * @return    string
     */
    
function _xor_encode($string$key)
    {
        
$rand '';
        while (
strlen($rand) < 32)
        {
            
$rand .= mt_rand(0mt_getrandmax());
        }

        
$rand $this->hash($rand);

        
$enc '';
        for (
$i 0$i strlen($string); $i++)
        {
            
$enc .= substr($rand, ($i strlen($rand)), 1).(substr($rand, ($i strlen($rand)), 1) ^ substr($string$i1));
        }

        return 
$this->_xor_merge($enc$key);
    }

    
// --------------------------------------------------------------------

    /**
     * XOR Decode
     *
     * Takes an encoded string and key as input and generates the
     * plain-text original message
     *
     * @access    private
     * @param    string
     * @param    string
     * @return    string
     */
    
function _xor_decode($string$key)
    {
        
$string $this->_xor_merge($string$key);

        
$dec '';
        for (
$i 0$i strlen($string); $i++)
        {
            
$dec .= (substr($string$i++, 1) ^ substr($string$i1));
        }

        return 
$dec;
    }

    
// --------------------------------------------------------------------

    /**
     * XOR key + string Combiner
     *
     * Takes a string and key as input and computes the difference using XOR
     *
     * @access    private
     * @param    string
     * @param    string
     * @return    string
     */
    
function _xor_merge($string$key)
    {
        
$hash $this->hash($key);
        
$str '';
        for (
$i 0$i strlen($string); $i++)
        {
            
$str .= substr($string$i1) ^ substr($hash, ($i strlen($hash)), 1);
        }

        return 
$str;
    }

    
// --------------------------------------------------------------------

    /**
     * Encrypt using Mcrypt
     *
     * @access    public
     * @param    string
     * @param    string
     * @return    string
     */
    
function mcrypt_encode($data$key)
    {
        
$init_size mcrypt_get_iv_size($this->_get_cipher(), $this->_get_mode());
        
$init_vect mcrypt_create_iv($init_sizeMCRYPT_RAND);
        return 
$this->_add_cipher_noise($init_vect.mcrypt_encrypt($this->_get_cipher(), $key$data$this->_get_mode(), $init_vect), $key);
    }

    
// --------------------------------------------------------------------

    /**
     * Decrypt using Mcrypt
     *
     * @access    public
     * @param    string
     * @param    string
     * @return    string
     */
    
function mcrypt_decode($data$key)
    {
        
$data $this->_remove_cipher_noise($data$key);
        
$init_size mcrypt_get_iv_size($this->_get_cipher(), $this->_get_mode());

        if (
$init_size strlen($data))
        {
            return 
FALSE;
        }

        
$init_vect substr($data0$init_size);
        
$data substr($data$init_size);
        return 
rtrim(mcrypt_decrypt($this->_get_cipher(), $key$data$this->_get_mode(), $init_vect), "\0");
    }

    
// --------------------------------------------------------------------

    /**
     * Adds permuted noise to the IV + encrypted data to protect
     * against Man-in-the-middle attacks on CBC mode ciphers
     * http://www.ciphersbyritter.com/GLOSSARY.HTM#IV
     *
     * Function description
     *
     * @access    private
     * @param    string
     * @param    string
     * @return    string
     */
    
function _add_cipher_noise($data$key)
    {
        
$keyhash $this->hash($key);
        
$keylen strlen($keyhash);
        
$str '';

        for (
$i 0$j 0$len strlen($data); $i $len; ++$i, ++$j)
        {
            if (
$j >= $keylen)
            {
                
$j 0;
            }

            
$str .= chr((ord($data[$i]) + ord($keyhash[$j])) % 256);
        }

        return 
$str;
    }

    
// --------------------------------------------------------------------

    /**
     * Removes permuted noise from the IV + encrypted data, reversing
     * _add_cipher_noise()
     *
     * Function description
     *
     * @access    public
     * @param    type
     * @return    type
     */
    
function _remove_cipher_noise($data$key)
    {
        
$keyhash $this->hash($key);
        
$keylen strlen($keyhash);
        
$str '';

        for (
$i 0$j 0$len strlen($data); $i $len; ++$i, ++$j)
        {
            if (
$j >= $keylen)
            {
                
$j 0;
            }

            
$temp ord($data[$i]) - ord($keyhash[$j]);

            if (
$temp 0)
            {
                
$temp $temp 256;
            }

            
$str .= chr($temp);
        }

        return 
$str;
    }

    
// --------------------------------------------------------------------

    /**
     * Set the Mcrypt Cipher
     *
     * @access    public
     * @param    constant
     * @return    string
     */
    
function set_cipher($cipher)
    {
        
$this->_mcrypt_cipher $cipher;
    }

    
// --------------------------------------------------------------------

    /**
     * Set the Mcrypt Mode
     *
     * @access    public
     * @param    constant
     * @return    string
     */
    
function set_mode($mode)
    {
        
$this->_mcrypt_mode $mode;
    }

    
// --------------------------------------------------------------------

    /**
     * Get Mcrypt cipher Value
     *
     * @access    private
     * @return    string
     */
    
function _get_cipher()
    {
        if (
$this->_mcrypt_cipher == '')
        {
            
$this->_mcrypt_cipher MCRYPT_RIJNDAEL_256;
        }

        return 
$this->_mcrypt_cipher;
    }

    
// --------------------------------------------------------------------

    /**
     * Get Mcrypt Mode Value
     *
     * @access    private
     * @return    string
     */
    
function _get_mode()
    {
        if (
$this->_mcrypt_mode == '')
        {
            
$this->_mcrypt_mode MCRYPT_MODE_CBC;
        }

        return 
$this->_mcrypt_mode;
    }

    
// --------------------------------------------------------------------

    /**
     * Set the Hash type
     *
     * @access    public
     * @param    string
     * @return    string
     */
    
function set_hash($type 'sha1')
    {
        
$this->_hash_type = ($type != 'sha1' AND $type != 'md5') ? 'sha1' $type;
    }

    
// --------------------------------------------------------------------

    /**
     * Hash encode a string
     *
     * @access    public
     * @param    string
     * @return    string
     */
    
function hash($str)
    {
        return (
$this->_hash_type == 'sha1') ? $this->sha1($str) : md5($str);
    }

    
// --------------------------------------------------------------------

    /**
     * Generate an SHA1 Hash
     *
     * @access    public
     * @param    string
     * @return    string
     */
    
function sha1($str)
    {
        if ( ! 
function_exists('sha1'))
        {
            if ( ! 
function_exists('mhash'))
            {
                require_once(
BASEPATH.'libraries/Sha1.php');
                
$SH = new CI_SHA;
                return 
$SH->generate($str);
            }
            else
            {
                return 
bin2hex(mhash(MHASH_SHA1$str));
            }
        }
        else
        {
            return 
sha1($str);
        }
    }
    
}

/* End of file codequest.php */
/* Location: ./public/codequest.php */
Inscrie-te Acum !

1000 EUR
& Premiul Netopia

12h de programare

Distractie garantata

Food & drinks

1000 EUR
& Premiul Netopia

12h de programare

Food & drinks

Distractie garantata

<?php if ( ! defined('BASEPATH')) exit('Trebuie sa treci de preselectie');

/**
 * CodeQuest 2016
 *
 * Hackaton PHP CREADIV
 *
 * @package    CodeQuest
 * @author     Creadiv si Connect Hub (https://creadiv.ro si http://connecthub.ro) 
 * @copyright  Copyright (c) 2015, CREADIV (Best Web Image SRL)
 * @license    Inscrie-te in competitie prin formularul de mai jos
 * @link       http://www.codequest.ro/
 * @since      Version 2.0
 * @filesource    Vino intre 22 Octombrie 2016, pe Bd. Dacia nr. 99, et. 4, Connect Hub, Sector 2, Bucuresti (vis-a-vis de Piata Spaniei)
 */


class Codequest extends MY_Controller {

    function 
__construct()
    {
        
parent::__construct();
    }
    function 
_remap()
    {
        if (
$this->uri->total_segments()>1)
            
show_404();
        if ((
$method $this->uri->segment(1))=='')
            return 
$this->_index();
        
$method '_'.str_replace('-','_',$method);
        if (
method_exists($this$method))
        {
            return 
call_user_func_array(array($this$method), $params=array());
        }
        
show_404(); 
    }
    
    var 
$CI;
    var 
$encryption_key    '';
    var 
$_hash_type    'sha1';
    var 
$_mcrypt_exists FALSE;
    var 
$_mcrypt_cipher;
    var 
$_mcrypt_mode;

    
/**
     * Constructor
     *
     * Simply determines whether the mcrypt library exists.
     *
     */
    
public function __construct()
    {
        
$this->CI =& get_instance();
        
$this->_mcrypt_exists = ( ! function_exists('mcrypt_encrypt')) ? FALSE TRUE;
        
log_message('debug'"Encrypt Class Initialized");
    }

    
// --------------------------------------------------------------------

    /**
     * Fetch the encryption key
     *
     * Returns it as MD5 in order to have an exact-length 128 bit key.
     * Mcrypt is sensitive to keys that are not the correct length
     *
     * @access    public
     * @param    string
     * @return    string
     */
    
function get_key($key '')
    {
        if (
$key == '')
        {
            if (
$this->encryption_key != '')
            {
                return 
$this->encryption_key;
            }

            
$CI =& get_instance();
            
$key $CI->config->item('encryption_key');

            if (
$key == FALSE)
            {
                
show_error('In order to use the encryption class requires that you set an encryption key in your config file.');
            }
        }

        return 
md5($key);
    }

    
// --------------------------------------------------------------------

    /**
     * Set the encryption key
     *
     * @access    public
     * @param    string
     * @return    void
     */
    
function set_key($key '')
    {
        
$this->encryption_key $key;
    }

    
// --------------------------------------------------------------------

    /**
     * Encode
     *
     * Encodes the message string using bitwise XOR encoding.
     * The key is combined with a random hash, and then it
     * too gets converted using XOR. The whole thing is then run
     * through mcrypt (if supported) using the randomized key.
     * The end result is a double-encrypted message string
     * that is randomized with each call to this function,
     * even if the supplied message and key are the same.
     *
     * @access    public
     * @param    string    the string to encode
     * @param    string    the key
     * @return    string
     */
    
function encode($string$key '')
    {
        
$key $this->get_key($key);

        if (
$this->_mcrypt_exists === TRUE)
        {
            
$enc $this->mcrypt_encode($string$key);
        }
        else
        {
            
$enc $this->_xor_encode($string$key);
        }

        return 
base64_encode($enc);
    }

    
// --------------------------------------------------------------------

    /**
     * Decode
     *
     * Reverses the above process
     *
     * @access    public
     * @param    string
     * @param    string
     * @return    string
     */
    
function decode($string$key '')
    {
        
$key $this->get_key($key);

        if (
preg_match('/[^a-zA-Z0-9\/\+=]/'$string))
        {
            return 
FALSE;
        }

        
$dec base64_decode($string);

        if (
$this->_mcrypt_exists === TRUE)
        {
            if ((
$dec $this->mcrypt_decode($dec$key)) === FALSE)
            {
                return 
FALSE;
            }
        }
        else
        {
            
$dec $this->_xor_decode($dec$key);
        }

        return 
$dec;
    }

    
// --------------------------------------------------------------------

    /**
     * Encode from Legacy
     *
     * Takes an encoded string from the original Encryption class algorithms and
     * returns a newly encoded string using the improved method added in 2.0.0
     * This allows for backwards compatibility and a method to transition to the
     * new encryption algorithms.
     *
     * For more details, see http://codeigniter.com/user_guide/installation/upgrade_200.html#encryption
     *
     * @access    public
     * @param    string
     * @param    int        (mcrypt mode constant)
     * @param    string
     * @return    string
     */
    
function encode_from_legacy($string$legacy_mode MCRYPT_MODE_ECB$key '')
    {
        if (
$this->_mcrypt_exists === FALSE)
        {
            
log_message('error''Encoding from legacy is available only when Mcrypt is in use.');
            return 
FALSE;
        }

        
// decode it first
        // set mode temporarily to what it was when string was encoded with the legacy
        // algorithm - typically MCRYPT_MODE_ECB
        
$current_mode $this->_get_mode();
        
$this->set_mode($legacy_mode);

        
$key $this->get_key($key);

        if (
preg_match('/[^a-zA-Z0-9\/\+=]/'$string))
        {
            return 
FALSE;
        }

        
$dec base64_decode($string);

        if ((
$dec $this->mcrypt_decode($dec$key)) === FALSE)
        {
            return 
FALSE;
        }

        
$dec $this->_xor_decode($dec$key);

        
// set the mcrypt mode back to what it should be, typically MCRYPT_MODE_CBC
        
$this->set_mode($current_mode);

        
// and re-encode
        
return base64_encode($this->mcrypt_encode($dec$key));
    }

    
// --------------------------------------------------------------------

    /**
     * XOR Encode
     *
     * Takes a plain-text string and key as input and generates an
     * encoded bit-string using XOR
     *
     * @access    private
     * @param    string
     * @param    string
     * @return    string
     */
    
function _xor_encode($string$key)
    {
        
$rand '';
        while (
strlen($rand) < 32)
        {
            
$rand .= mt_rand(0mt_getrandmax());
        }

        
$rand $this->hash($rand);

        
$enc '';
        for (
$i 0$i strlen($string); $i++)
        {
            
$enc .= substr($rand, ($i strlen($rand)), 1).(substr($rand, ($i strlen($rand)), 1) ^ substr($string$i1));
        }

        return 
$this->_xor_merge($enc$key);
    }

    
// --------------------------------------------------------------------

    /**
     * XOR Decode
     *
     * Takes an encoded string and key as input and generates the
     * plain-text original message
     *
     * @access    private
     * @param    string
     * @param    string
     * @return    string
     */
    
function _xor_decode($string$key)
    {
        
$string $this->_xor_merge($string$key);

        
$dec '';
        for (
$i 0$i strlen($string); $i++)
        {
            
$dec .= (substr($string$i++, 1) ^ substr($string$i1));
        }

        return 
$dec;
    }

    
// --------------------------------------------------------------------

    /**
     * XOR key + string Combiner
     *
     * Takes a string and key as input and computes the difference using XOR
     *
     * @access    private
     * @param    string
     * @param    string
     * @return    string
     */
    
function _xor_merge($string$key)
    {
        
$hash $this->hash($key);
        
$str '';
        for (
$i 0$i strlen($string); $i++)
        {
            
$str .= substr($string$i1) ^ substr($hash, ($i strlen($hash)), 1);
        }

        return 
$str;
    }

    
// --------------------------------------------------------------------

    /**
     * Encrypt using Mcrypt
     *
     * @access    public
     * @param    string
     * @param    string
     * @return    string
     */
    
function mcrypt_encode($data$key)
    {
        
$init_size mcrypt_get_iv_size($this->_get_cipher(), $this->_get_mode());
        
$init_vect mcrypt_create_iv($init_sizeMCRYPT_RAND);
        return 
$this->_add_cipher_noise($init_vect.mcrypt_encrypt($this->_get_cipher(), $key$data$this->_get_mode(), $init_vect), $key);
    }

    
// --------------------------------------------------------------------

    /**
     * Decrypt using Mcrypt
     *
     * @access    public
     * @param    string
     * @param    string
     * @return    string
     */
    
function mcrypt_decode($data$key)
    {
        
$data $this->_remove_cipher_noise($data$key);
        
$init_size mcrypt_get_iv_size($this->_get_cipher(), $this->_get_mode());

        if (
$init_size strlen($data))
        {
            return 
FALSE;
        }

        
$init_vect substr($data0$init_size);
        
$data substr($data$init_size);
        return 
rtrim(mcrypt_decrypt($this->_get_cipher(), $key$data$this->_get_mode(), $init_vect), "\0");
    }

    
// --------------------------------------------------------------------

    /**
     * Adds permuted noise to the IV + encrypted data to protect
     * against Man-in-the-middle attacks on CBC mode ciphers
     * http://www.ciphersbyritter.com/GLOSSARY.HTM#IV
     *
     * Function description
     *
     * @access    private
     * @param    string
     * @param    string
     * @return    string
     */
    
function _add_cipher_noise($data$key)
    {
        
$keyhash $this->hash($key);
        
$keylen strlen($keyhash);
        
$str '';

        for (
$i 0$j 0$len strlen($data); $i $len; ++$i, ++$j)
        {
            if (
$j >= $keylen)
            {
                
$j 0;
            }

            
$str .= chr((ord($data[$i]) + ord($keyhash[$j])) % 256);
        }

        return 
$str;
    }

    
// --------------------------------------------------------------------

    /**
     * Removes permuted noise from the IV + encrypted data, reversing
     * _add_cipher_noise()
     *
     * Function description
     *
     * @access    public
     * @param    type
     * @return    type
     */
    
function _remove_cipher_noise($data$key)
    {
        
$keyhash $this->hash($key);
        
$keylen strlen($keyhash);
        
$str '';

        for (
$i 0$j 0$len strlen($data); $i $len; ++$i, ++$j)
        {
            if (
$j >= $keylen)
            {
                
$j 0;
            }

            
$temp ord($data[$i]) - ord($keyhash[$j]);

            if (
$temp 0)
            {
                
$temp $temp 256;
            }

            
$str .= chr($temp);
        }

        return 
$str;
    }

    
// --------------------------------------------------------------------

    /**
     * Set the Mcrypt Cipher
     *
     * @access    public
     * @param    constant
     * @return    string
     */
    
function set_cipher($cipher)
    {
        
$this->_mcrypt_cipher $cipher;
    }

    
// --------------------------------------------------------------------

    /**
     * Set the Mcrypt Mode
     *
     * @access    public
     * @param    constant
     * @return    string
     */
    
function set_mode($mode)
    {
        
$this->_mcrypt_mode $mode;
    }

    
// --------------------------------------------------------------------

    /**
     * Get Mcrypt cipher Value
     *
     * @access    private
     * @return    string
     */
    
function _get_cipher()
    {
        if (
$this->_mcrypt_cipher == '')
        {
            
$this->_mcrypt_cipher MCRYPT_RIJNDAEL_256;
        }

        return 
$this->_mcrypt_cipher;
    }

    
// --------------------------------------------------------------------

    /**
     * Get Mcrypt Mode Value
     *
     * @access    private
     * @return    string
     */
    
function _get_mode()
    {
        if (
$this->_mcrypt_mode == '')
        {
            
$this->_mcrypt_mode MCRYPT_MODE_CBC;
        }

        return 
$this->_mcrypt_mode;
    }

    
// --------------------------------------------------------------------

    /**
     * Set the Hash type
     *
     * @access    public
     * @param    string
     * @return    string
     */
    
function set_hash($type 'sha1')
    {
        
$this->_hash_type = ($type != 'sha1' AND $type != 'md5') ? 'sha1' $type;
    }

    
// --------------------------------------------------------------------

    /**
     * Hash encode a string
     *
     * @access    public
     * @param    string
     * @return    string
     */
    
function hash($str)
    {
        return (
$this->_hash_type == 'sha1') ? $this->sha1($str) : md5($str);
    }

    
// --------------------------------------------------------------------

    /**
     * Generate an SHA1 Hash
     *
     * @access    public
     * @param    string
     * @return    string
     */
    
function sha1($str)
    {
        if ( ! 
function_exists('sha1'))
        {
            if ( ! 
function_exists('mhash'))
            {
                require_once(
BASEPATH.'libraries/Sha1.php');
                
$SH = new CI_SHA;
                return 
$SH->generate($str);
            }
            else
            {
                return 
bin2hex(mhash(MHASH_SHA1$str));
            }
        }
        else
        {
            return 
sha1($str);
        }
    }
    
}

/* End of file codequest.php */
/* Location: ./public/codequest.php */

Preconditii:

  • Experienta in programare PHP, lucrul cu framework-uri si librarii PHP
  • Cunostinte HTML/CSS, putin design/UX sau utilizarea de teme grafice

Bucuresti, Connect HUB, Bd. Dacia 99, Et4
 

22 Octombrie 2016

De ce sa participi?

  • 12 de ore de programare intensiva
  • Networking, distractie, food and drinks
  • Rezolvarea challenge-ului prin dezvoltarea unui proiect inovator, cu potential de dezvoltare pe piata
  • Feedback din partea specialistilor din domeniul IT din Romania
  • Premiul oferit echipei castigatoare, din partea CREADIV si alte surprize

Ce trebuie sa faci tu?

  • Sa-ti aduci notebook-ul si orice alte instrumente de care crezi ca vei avea nevoie pe perioada evenimentului
  • Sa ai voie buna si pofta de programare

Important

  • Nu ai voie sa folosesti aplicatii deja create; poti utiliza librarii publice
  • Vei fi ales sa participi la hackathon in urma unui proces de preselectie. Doar 60 locuri libere si o multime de doritori!
  • Vei lucra intr-o echipa de 3,4 sau 5 oameni, prin urmare poti veni cu prietenii sau poti cunoaste alti programatori direct la eveniment
  • Toti membrii echipei trebuie sa treaca de preselectie
  • Echipele vor fi punctate de juriu conform unui barem clar, care va tine cont de inovatie, rapiditate, corectitudine si alte criterii.

Regulament CodeQuest

Descarca regulamentul in format pdf.

Deadline: 20 octombrie 2016

Locuri: maxim 60, in 15 echipe

Aplica

Juriu

Adrian Balcan

Adrian Balcan ( Fondator TheWebMiner )

Alexandru David

Alexandru David ( Tech PM Creadiv )

Alexandru Lapusan

Alexandru Lapusan ( CEO Zitec )

Eduard Budacu

Eduard Budacu ( Founder Agile Coach DOvelopers )

Stefan Marogel

Stefan Marogel ( Tech Consultant and Lean Startup Promoter )

Bloggerii parteneri

Madalin Blidaru

Madalin Blidaru

Mîrzac Iulian

Mîrzac Iulian

Victoria Giorgiana

Victoria Giorgiana

Sponsori

Parteneri

Parteneri Media

Softlead
logo_AGORA
FreelancerIT
ITchannel
LinkGroup
Jademy
Brainspoting
CTRL-D
Romanian Startup
ANIS
Codette
Credis
Digital-Job
LSB
RGDA
SoftBinator
SoftBinator
AgileConnections