Делал как-то одним параноикам внутреннюю инф. систему. Каждое утро начальник вводил на спец. странице ключ шифрования и вектор инициализации, которые знал только он. Те устанавливались в мемкеш на 8 часов и система начинала работать. Все важные данные в мусукле шифровались этим ключом. При отключении питания веб-сервера - ключ из мемкеша испарялся, система вывдавала фэйковые 500е ошибки, а в базе понятно - какая-то чушь.
во...даже нашел класс:
class CryptCore {
const CACHE_KEY = 'cryptKey';
const CACHE_IV = 'cryptIv';
const CRYPT_TYPE = 'aes-256-cbc';
public static function genIv() {
return openssl_random_pseudo_bytes(16, $wasItSecure);
}
/**
* Шифруем строку
*
* @param string $str
*
* @return string
*/
public static function enCrypt($str) {
$str = openssl_encrypt($str, static::CRYPT_TYPE, static::_getPassword(), 0, static::_getIv());
return $str;
}
/**
* Расшифровываем строку
*
* @param string $str
*
* @return string
*/
public static function deCrypt($str) {
$str = openssl_decrypt($str, static::CRYPT_TYPE, static::_getPassword(), 0, static::_getIv());
return $str;
}
/**
* @return string|bool
*
*/
private static function _getPassword() {
return Yii::$app->cache->get(static::CACHE_KEY);
}
/**
* @return string|bool
*
*/
private static function _getIv() {
return Yii::$app->cache->get(static::CACHE_IV);
}
}
ну это я так, поддержать беседу)