mcrypt

scorpion-ds

Новичок
В проекте надо хранить пароли от ресурсов в БД, так как тут хэш-кодом не обойтись и логин/пароль надо получать в исходном виде, стал использовать в проекте mcrypt.

Для свои целей написал простейший класс, который шифрует и дешифрует строки, при написании использовал мануалы с Инета, так что комменты могут быть кому-то знакомы:
PHP:
class CSCrypted {
	
	private $resource;
	private $iv;
	private $ks;
	private $key;
	
	function __construct() {
		
		$this->resource = mcrypt_module_open(MCRYPT_3DES, '', MCRYPT_MODE_ECB, '');
		
		/* Создать IV и определить длину keysize */
		$this->iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($this->resource), MCRYPT_DEV_URANDOM);
		$this->ks = mcrypt_enc_get_key_size ($this->resource);
		$this->key = substr (md5 (_system_code), 0, $this->ks);
		
	}
	
	/**
	 * Кодирует строку
	 * @param string $string
	 */
	public function encodeString($string)	{
		
		return $string;
		
		if($string == '')
			return FALSE;
		
		 /* Инициализировать шифрование */
	    mcrypt_generic_init ($this->resource, $this->key, $this->iv);
	
	    /* Шифровать данные */
	    $encrypted = mcrypt_generic ($this->resource, $string);
	
	    /* Закрыть дескриптор шифрования */
	    mcrypt_generic_deinit ($this->resource);
		
	    return $encrypted;
	    
	}
	
	/**
	 * Декодирует строку
	 * @param string $encrypted
	 */
	public function decodeString($encrypted)	{
		
		return $encrypted;
		
		if($encrypted == '')
			return FALSE;
		
		/* Инициализировать модуль шифрования для дешифрования */
		mcrypt_generic_init ($this->resource, $this->key, $this->iv);
		
		/* Дешифровать шифрованную строку */
		$decrypted = mdecrypt_generic ($this->resource, $encrypted);
		
		/* Закрыть дескриптор дешифрования и закрыть модуль */
		mcrypt_generic_deinit ($this->resource);
		
		return $decrypted;
	
	}
	
	function __destruct()	{
		mcrypt_module_close ($this->resource);
	}
	
}
Если в конструкторе я использую:
$this->iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($this->resource), MCRYPT_DEV_RANDOM);

то скрипт с невероятной силой начинает тормозить, если использую параметр MCRYPT_DEV_URANDOM, то на первый взгляд работает быстро. Причем на локальной машине все работает нормально, а вот на хостинг площадке тормозит.

Подскажите, это сам по себе модуль тяжелый или, что-то не так с настройками сервера? Интересует в первую очередь быстродействие, ради этого можно даже пароли хранить в открытом виде (защищать тогда будем FTP сервера, к примеру что учетка от сайта работает только с IP-сервера сайта).

P.S.: Хостинг я использую 1Gb.ua (VDS).
 

С.

Продвинутый новичок
Нет никакого смысла шифровать данные и рядышком размещать ключ для расшифровки.
 

scorpion-ds

Новичок
Нет никакого смысла шифровать данные и рядышком размещать ключ для расшифровки.
Это хоть какая-то защита от дурака, "взломщику" по меньшей мере придется разбираться в технологии шифрования и что от куда берется, да в и дампах БД не будет открыто виден пароль.
 

С.

Продвинутый новичок
Тогда что-то типа rot13() будет иметь такую же эффективность, но гораздо быстрее.
 

scorpion-ds

Новичок
grigori
Спасибо за ссылку, судя по всему тормоза вызываются особенностью генерации случайных числе в данном методе, random в общем-то решает мою задачу.

По поводу 2, как я сказал в первом сообщении, мне необходимо хранить в БД пароли от FTP ресурса, куда на данный момент будет отправляться некая информация, далее возможно забираться. Задача была скрыть от "дурака" пароль в БД, пока проект в разработке и что бы избежать лишних тормозов mcrypt бы отключен полностью, пароли хранятся в открытом виде. Дальше буду думать, как лучше поступить, может просто остановится на настройках безопасности FTP сервера, что бы пароль был бесполезен вне сайта.
 
Сверху