安全库安全库处理基本的安全性措施,例如提供用于哈希和加密数据的函数。
使用 AES-256 加密 $text
。 $key
应该是一个具有大量数据变化的值,类似于一个好的密码。返回的结果将是加密后的值,包含一个 HMAC 校验和。
加密/解密需要openssl扩展。
一个使用示例为
// Assuming key is stored somewhere it can be re-used for
// decryption later.
$key = 'wt1U5MACWJFTXGenFoZoiLwQGrLgdbHA';
$result = Security::encrypt($value, $key);
如果未提供 HMAC salt,则将使用 Security::getSalt()
的值。加密的值可以使用Cake\Utility\Security::decrypt()
解密。
此函数**永远**不应用于存储密码。
解密之前加密的值。 $key
和 $hmacSalt
参数必须与用于加密的值匹配,否则解密将失败。一个使用示例为
// Assuming the key is stored somewhere it can be re-used for
// Decryption later.
$key = 'wt1U5MACWJFTXGenFoZoiLwQGrLgdbHA';
$cipher = $user->secrets;
$result = Security::decrypt($cipher, $key);
如果由于密钥或 HMAC salt 的更改而无法解密该值,则将返回 false
。
使用给定方法从字符串创建哈希。回退到下一个可用方法。如果 $salt
设置为 true
,则将使用应用程序的 salt 值
// Using the application's salt value
$sha1 = Security::hash('CakePHP Framework', 'sha1', true);
// Using a custom salt value
$sha1 = Security::hash('CakePHP Framework', 'sha1', 'my-salt');
// Using the default hash algorithm
$hash = Security::hash('CakePHP Framework');
hash()
函数支持以下哈希策略
md5
sha1
sha256
以及 PHP 的 hash()
函数支持的任何其他哈希算法。
警告
在新的应用程序中,你不应该使用 hash()
来处理密码。 相反,你应该使用 DefaultPasswordHasher
类,它默认使用 bcrypt。
从安全的随机源获取 $length
字节数。此函数从以下来源之一获取数据
PHP 的 random_bytes
函数。
openssl_random_pseudo_bytes
来自 SSL 扩展。
如果两个来源都不可用,将发出警告,并使用不安全的值以确保向后兼容。
从安全的随机源获取一个长度为 $length
的随机字符串。此函数从与 randomBytes()
相同的随机源中获取数据,并将数据编码为十六进制字符串。