Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DES ECB шифрование 
:(
    Опции темы
bars80080
Дата 23.11.2011, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



на основе этого

http://ru.php.net/manual/ru/function.mcrypt-module-open.php

правильно ли я понимаю, что ключ для DES ECB - совершенно случаен и получается таким макаром?

Код

$td = mcrypt_module_open(MCRYPT_DES, '', MCRYPT_MODE_ECB, '');
var_dump($td);

$ks = mcrypt_enc_get_key_size($td);
var_dump($ks);

$key = substr(md5('very secret key'), 0, $ks);
var_dump($key);

PM MAIL WWW   Вверх
bars80080
Дата 23.11.2011, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



ну, вроде такой код работает

посмотрим как в связке с прочими будет ишачить

Код

$crypter = new dec_ecb_crypter();
$crypter->create();
$crypter->gen_key('password');

$str = 'This is very important data немного тескта по русски';

$code = $crypter->encrypt($str);

$text = $crypter->decrypt($code);

$crypter->close();

class dec_ecb_crypter {
    var $resource;
    var $iv = '12345678';
    var $key = '';
    var $key_size = 0;
    var $key_source = '';
    var $create_stamp_limit = 0;
    var $key_time_life = 3600;
    var $open = false;
    var $auto_reload = false;
    function dec_ecb_crypter() {}
    function create() {
        $this->create_stamp_limit = time() + $this->key_time_life;
        $this->resource = mcrypt_module_open(MCRYPT_DES, '', MCRYPT_MODE_ECB, '');
        $this->key_size = mcrypt_enc_get_key_size($this->resource);
    }
    function gen_key($key_source = '') {
        if(empty($key_source)) { $key_source = rand(100, 9999); }
        $this->key_source = $key_source;
        $this->key = substr(md5($this->key_source), 0, $this->key_size);
        $this->open = true;
    }
    function set_key($key) {
        $this->key = $key;
        $this->key_size = strlen($this->key);
    }
    function prov_time_life() {
        $time = time();
        if($this->create_stamp_limit < $time) { return false; }
        return true;
    }
    function set_iv() {
        $this->auto_reload();
        $this->iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($this->resource), MCRYPT_RAND);
    }
    function encrypt($data = '') {
        $this->auto_reload();
        mcrypt_generic_init($this->resource, $this->key, $this->iv);
        $ret = mcrypt_generic($this->resource, $data);
        mcrypt_generic_deinit($this->resource);
        return $ret;
    }
    function decrypt($data = '') {
        $this->auto_reload();
        mcrypt_generic_init($this->resource, $this->key, $this->iv);
        $ret = mdecrypt_generic($this->resource, $data);
        mcrypt_generic_deinit($this->resource);
        
        $ret = $this->clear_end($ret);
        return $ret;
    }
    function clear_end($ret) {
        $len = strlen($ret); $null = pack('x1');
        for($i = $len - 1; $i >= 0; $i--) {
            $last = substr($ret, $i, 1);
            if($last === $null) { $ret = substr($ret, 0, -1); }
            else { break; }
        }
        return $ret;
    }
    function close() {
        mcrypt_module_close($this->resource);
        $this->open = false;
    }
    function auto_reload() {
        if(!$this->auto_reload) { return; }
        $prov = $this->prov_time_life();
        if(!$prov) { $this->reload(); }
    }
    function reload($key_source = '') {
        if(empty($key_source)) { $key_source = $this->key_source; }
        if($this->open) { $this->close(); }
        $this->create();
        $this->gen_key($key_source);
    }
}

PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0533 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.