private static function useMcryptBacking()
    {
        if (!extension_loaded(self::BACKING_MCRYPT)) {
            throw new \RuntimeException(
                    'Can not use mcrypt backing, extension mcrypt not available'
            );
        }

        $engine   = mcrypt_module_open(MCRYPT_DES, '', 'ecb', '');
        $engineiv = mcrypt_create_iv(mcrypt_enc_get_iv_size($engine), MCRYPT_RAND);
        $key      = substr(md5(uniqid()), 0, mcrypt_enc_get_key_size($engine));
        mcrypt_generic_init($engine, $key, $engineiv);
        self::$encrypt = function($value) use($engine) { return mcrypt_generic($engine, $value); };
        self::$decrypt = function($value) use($engine) { return rtrim(mdecrypt_generic($engine, $value), "\0"); };
    }