Вход Регистрация
Файл: sys/classes/crypt.class.php
Строк: 52
<?php

#Шифрование и хэширование данных

abstract class crypt {
    
#Получаем вектор шифрования

    
static function getIV() {
        if (!
function_exists('mcrypt_module_open')) {
            return 
false;
        }
        static 
$iv = false;

        if (!
$iv) {
            
$iv = @file_get_contents(H . '/sys/ini/iv.dat');
        }

        if (!
$iv) {
            
$td = mcrypt_module_open('rijndael-256', '', 'ofb', '');
            
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_DEV_RANDOM);
            if (
file_put_contents(H . '/sys/ini/iv.dat', $iv) === false) {
                die(
'Не удалось сохранить sys/ini/iv.dat');
            }
            @
chmod(H . '/sys/ini/iv.dat', getChmodToRead());
        }

        return 
$iv;
    }

    
#делаем хэш пароля с наложением соли (покажем большой куй всем сервисам с md5 базами)

    
static function hash($pass) {
        global 
$set;

        
$salt = $set['shif'];
        return 
md5($salt . md5((string) $pass) . md5($salt) . $salt);
    }

    static function 
shif($str) {
        global 
$set;
        
$key = $set['shif'];
        
$str1 = md5((string) $str);
        
$str2 = md5($key);
        return 
md5($key . $str1 . $str2 . $key);
    }

    
#Шифрование данных указанным ключем

    
static function encrypt($str, $key) {
        if (
$iv = self::getIV()) {
            
$td = mcrypt_module_open('rijndael-256', '', 'ofb', '');
            
$ks = @mcrypt_enc_get_key_size($td);
            
$key = substr(md5($key), 0, $ks);
            @
mcrypt_generic_init($td, $key, $iv);
            
$str = @mcrypt_generic($td, $str);
            @
mcrypt_generic_deinit($td);
            @
mcrypt_module_close($td);
        }

        return 
base64_encode(base64_encode($str));
    }

    
#Расшифровка данных указанным ключем

    
static function decrypt($str, $key) {
        
$str = base64_decode(base64_decode($str));
        if (
$iv = self::getIV()) {
            
$td = mcrypt_module_open('rijndael-256', '', 'ofb', '');
            
$ks = @mcrypt_enc_get_key_size($td);
            
$key = substr(md5($key), 0, $ks);
            @
mcrypt_generic_init($td, $key, $iv);
            
$str = @mdecrypt_generic($td, $str);
            @
mcrypt_generic_deinit($td);
            @
mcrypt_module_close($td);
        }
        return 
$str;
    }

}
Онлайн: 2
Реклама