Решил опубликовать очередной свой класс. Этот класс служит для шифрования/кодирования. Меньше слов, смотрим код. Вопросы в комментарии.

<?php
 
class Crypt 
{
    protected static $_config = array(
        'algorithm' => MCRYPT_BLOWFISH, 
        'mode'      => MCRYPT_MODE_ECB, 
        'key'       => 'crypt_key', 
        'md5'       => 'md5_salt', 
        'sha1'      => 'sha1_salt');
        
    private static $resource = null;
    
    protected static function init()
    {
        if(!self::$resource)
        {
            self::$resource = mcrypt_module_open(self::$_config['algorithm'], null, self::$_config['mode'], null);
            mcrypt_generic_init(self::$resource, self::$_config['key'], mcrypt_create_iv(mcrypt_enc_get_iv_size(self::$resource), MCRYPT_RAND));
        }
    } 
 
    public static function mcrypt_encrypt($str)
    {
        self::init();
        return mcrypt_generic(self::$resource, $str);
    } 
 
    public static function mcrypt_decrypt($str)
    {
        self::init();
        return rtrim(mdecrypt_generic(self::$resource, $str));
    }
    
    public static function hex_encrypt($string)
    {
        $hex = '';
        for ($i=0; $i < strlen($string); $i++) $hex .= dechex(ord($string[$i]));
        return $hex;
    }

    public static function hex_decrypt($hex)
    {
        $string = '';
        for ($i = 0; $i < strlen($hex)-1; $i += 2) $string .= chr(hexdec($hex[$i] . $hex[$i+1]));
        return $string;
    }
    
    public static function GetRandomHash($length = 6)
    {
        $hChars = unserialize('a:62:{i:0;i:0;i:1;i:1;i:2;i:2;i:3;i:3;i:4;i:4;i:5;i:5;i:6;i:6;i:7;i:7;i:8;i:8;i:9;i:9;i:10;s:1:"A";i:11;s:1:"a";i:12;s:1:"B";i:13;s:1:"b";i:14;s:1:"C";i:15;s:1:"c";i:16;s:1:"D";i:17;s:1:"d";i:18;s:1:"E";i:19;s:1:"e";i:20;s:1:"F";i:21;s:1:"f";i:22;s:1:"G";i:23;s:1:"g";i:24;s:1:"H";i:25;s:1:"h";i:26;s:1:"I";i:27;s:1:"i";i:28;s:1:"J";i:29;s:1:"j";i:30;s:1:"K";i:31;s:1:"k";i:32;s:1:"L";i:33;s:1:"l";i:34;s:1:"M";i:35;s:1:"m";i:36;s:1:"N";i:37;s:1:"n";i:38;s:1:"O";i:39;s:1:"o";i:40;s:1:"P";i:41;s:1:"p";i:42;s:1:"Q";i:43;s:1:"q";i:44;s:1:"R";i:45;s:1:"r";i:46;s:1:"S";i:47;s:1:"s";i:48;s:1:"T";i:49;s:1:"t";i:50;s:1:"U";i:51;s:1:"u";i:52;s:1:"V";i:53;s:1:"v";i:54;s:1:"W";i:55;s:1:"w";i:56;s:1:"X";i:57;s:1:"x";i:58;s:1:"Y";i:59;s:1:"y";i:60;s:1:"Z";i:61;s:1:"z";}');

        $hash = '';
        
        for($i = 0; $i < $length ; $i++) $hash .= $hChars[array_rand($hChars)];
        
        return $hash;
    } 
 
    public static function md5($string, $raw_output = false)
    {
        return md5($string . sha1($string . self::$_config['sha1']) . self::$_config['md5'], $raw_output);
    } 
 
    public static function sha1($string, $raw_output = false)
    {
        return sha1($string . md5($string . self::$_config['md5']) . self::$_config['sha1'], $raw_output);
    } 
 
    public static function base64_encode($string)
    {
        return strtr(base64_encode($string), '+/=', '-_~');
    } 
 
    public static function base64_decode($string)
    {
        return base64_decode(strtr($string, '-_~', '+/='));
    }
}

Кстати, я планирую заняться разработкой собственного продукта для управления сервером. Думаю в конце лета покажу beta версию своей панели (даже название не могу придумать 🙂 )

Симпатичные всплывающие окошки на jQuery — ThickBox – всплывающие окна на jQuery

Проблемы с компьютером? Вам сюда — ремонт компьютеров

Подписываемся на обновления блога по Email:

Введите адрес электронной почты



Метки: , ,

3 комментариев


  1. Виктор on 17 Янв 2012

    А как использовать, можно пример использования и конечный результат?

  2. Anatoliy on 11 Сен 2013

    Ну что, продукт для управления сервером развивается, или забили?)
    Было бы интересно увидеть)) Пусть и бету)

    • admin on 11 Сен 2013

      В свое время проделал довольно большую работу, но из-за недостатка времени разработку проекта пришлось приостановить на неопределенный срок.. Инвестиции бы все решили 🙂


Оставьте свой комментарий