我正在尝试使用blake2来散列用户数据。
我们团队的另一个开发人员能够让他在当地环境和我们的开发服务器上工作,但我似乎无法让它在我的本地环境中工作。
我将extension = blake2.so添加到我的php.ini文件中。我还完成了blake2 github的读物中概述的步骤。
这是函数
protected static function hashField($field)
{
$key = Config::get('app.key');
return blake2($field, 64, $key);
}
这是在BaseModel中。 我写了另一个函数来加密可加密的特征文件中的相同的用户数据,这就是我正在调用我的hashField函数。
我在我的Encrytpable特征文件中调用BaseModel:
<?php
namespace Encryption;
use Crypt;
use BaseModel;
trait Encryptable
{
public function getAttribute($key)
{
$value = parent::getAttribute($key);
if (in_array($key, $this->encryptable)) {
$value = Crypt::decrypt($value);
}
return $value;
}
public function setAttribute($key, $value)
{
$hashedKey = str_replace('encrypted', 'hashed', $key);
if (in_array($key, $this->encryptable) && in_array($hashedKey, $this->hashable)) {
$hashedValue = BaseModel::hashField($value);
$value = Crypt::encrypt($value);
}
isset($hashedValue) ? parent::setAttribute($hashedKey, $hashedValue) : null;
return parent::setAttribute($key, $value);
}
}
这里我在用户模型中定义了哈希列:
protected $hashable =[
'hashed_first_name',
'hashed_last_name',
'hashed_address_street',
'hashed_address_apt',
'hashed_address_city',
'hashed_address_state',
'hashed_address_zip',
'hashed_dob'
];
我正在运行php 7.1和laravel 4.2。 有任何想法吗?我被困了很长一段时间。谢谢!