Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 用AES_加密在雄辩模型中加密_Mysql_Encryption_Laravel 5_Aes - Fatal编程技术网

Mysql 用AES_加密在雄辩模型中加密

Mysql 用AES_加密在雄辩模型中加密,mysql,encryption,laravel-5,aes,Mysql,Encryption,Laravel 5,Aes,Laravel有一个内置的Crypt类,可以进行加密。该密钥与应用程序关联,可根据请求使用以下方式更改: $key = env('DEV_CACHE_KEY', 'DEV_CHANGE'); Crypt::setKey($key); // sets to new key $action->descr = Crypt::encrypt($request->descr); Crypt::setKey(Config::get('app.key')); // resets key to ap

Laravel有一个内置的Crypt类,可以进行加密。该密钥与应用程序关联,可根据请求使用以下方式更改:

$key = env('DEV_CACHE_KEY', 'DEV_CHANGE');
Crypt::setKey($key); // sets to new key
$action->descr = Crypt::encrypt($request->descr);
Crypt::setKey(Config::get('app.key')); // resets key to app
$action->save()
我们使用保存在特定服务器上的Memcached密钥保存数据。这设置为通过Memcached类检索,但目前我使用的是保存到应用程序环境中的已定义密钥。在MySQLs
AES_DECRYPT()
中使用定义的密钥对保存的数据进行解密。我们正在努力保持向后兼容性,因此我需要能够执行类似MySQLs
AES\u ENCRYPT()
的操作

上面的代码不起作用,因为当我使用下面的代码进行解密时,它返回空

$ynak = env('DEV_CACHE_KEY', 'DEV_CHANGE');;

return DB::connection('action_table')
    ->table('action AS a')
    ->select('a.*', DB::raw('AES_DECRYPT(`descr`, "'.$ynak.'") as `descr`'), DB::raw('(status LIKE "%completed%" OR status LIKE "%closed%") as isClosed'));
表的设置方式有点糟糕,因为我继承了它,但不允许我进行更改


有没有一种方法可以使用
Crypt::encrypt
来等同于MySQL
AES_encrypt

我没有找到一种成功的方法来按照我的要求来实现这一点。如果另一个用户发布了一个答案,我会接受它,但这是我的解决办法

以某种方式创建模型的新实例。一切都可以接受。它应该只创建模型并保存到数据库中

此时您将有一个id(您应该有一个要引用的自动增量id)

这将根据需要执行AES加密并创建新操作。唯一的问题是无法使用
$action->descr
成功显示保存的文本/加密文本。我不需要那种能力,所以那并不重要

$action = new Action();
...
$action->save();

$id = $action->id;
$key = env('DEV_CACHE_KEY', 'DEV_CHANGE');
DB::connection('action_table')->table('action')->where('id', '=', $id)->update([
    'descr' => DB::raw('AES_ENCRYPT("'.$request->descr.'", "'.$key.'")')
]);