Mysql 用AES_加密在雄辩模型中加密
Laravel有一个内置的Crypt类,可以进行加密。该密钥与应用程序关联,可根据请求使用以下方式更改: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
$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类检索,但目前我使用的是保存到应用程序环境中的已定义密钥。在MySQLsAES_DECRYPT()
中使用定义的密钥对保存的数据进行解密。我们正在努力保持向后兼容性,因此我需要能够执行类似MySQLsAES\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
来等同于MySQLAES_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.'")')
]);