类安全
Security 库包含与安全相关的实用方法
属性摘要
-
$_instance protected static
object|null
要使用的加密实现。
-
$_salt protected static
string|null
用于加密和解密例程的 HMAC 盐。
-
$hashType public static
string
默认哈希方法。如果
$type
参数对于Security::hash()
没有指定,则使用此值。默认为 'sha1'。
方法摘要
-
_checkKey() protected static
检查加密密钥的长度是否正确。
-
constantEquals() public static
一个抗时序攻击的比较,优先使用本机 PHP 实现。
-
decrypt() public static
使用 AES-256 解密值。
-
encrypt() public static
使用 AES-256 加密值。
-
engine() public static
根据已加载的扩展获取加密实现。
-
getSalt() public static
获取用于加密/解密例程的 HMAC 盐。
-
hash() public static
使用给定方法从字符串创建哈希值。
-
insecureRandomBytes() public static
与上面的 randomBytes() 相似,但不是加密安全的。
-
randomBytes() public static
从安全来源获取随机字节。
-
randomString() public static
创建一个安全的随机字符串。
-
setHash() public static
为 Security 对象设置默认哈希方法。这会影响所有使用 Security::hash() 的对象。
-
setSalt() public static
设置用于加密/解密例程的 HMAC 盐。
方法详情
_checkKey() ¶ protected static
_checkKey(string $key, string $method): void
检查加密密钥的长度是否正确。
参数
-
string
$key 要检查的密钥。
-
string
$method 正在为其检查密钥的方法。
返回
void
抛出
InvalidArgumentException
当密钥长度不是 256 位/32 字节时
constantEquals() ¶ public static
constantEquals(mixed $original, mixed $compare): bool
一个抗时序攻击的比较,优先使用本机 PHP 实现。
参数
-
mixed
$original 原始值。
-
mixed
$compare 比较值。
返回
bool
decrypt() ¶ public static
decrypt(string $cipher, string $key, string|null $hmacSalt = null): string|null
使用 AES-256 解密值。
参数
-
string
$cipher 要解密的密文。
-
string
$key 要作为密码密钥使用的 256 位/32 字节密钥。
-
string|null
$hmacSalt optional 用于 HMAC 过程的盐。保留为空以使用 Security::getSalt() 的值。
返回
string|null
抛出
InvalidArgumentException
在数据或密钥无效时。
encrypt() ¶ public static
encrypt(string $plain, string $key, string|null $hmacSalt = null): string
使用 AES-256 加密值。
警告 您不能正确地加密/解密尾随空字节的数据。由于 PHP 在加密之前用空字节填充消息的方式,任何尾随空字节都会在解密时被删除。
参数
-
string
$plain 要加密的值。
-
string
$key 要作为密码密钥使用的 256 位/32 字节密钥。
-
string|null
$hmacSalt optional 用于 HMAC 过程的盐。保留为空以使用 Security::getSalt() 的值。
返回
string
抛出
InvalidArgumentException
在数据或密钥无效时。
engine() ¶ public static
engine(Cake\Utility\Crypto\OpenSsl|null $instance = null): Cake\Utility\Crypto\OpenSsl
根据已加载的扩展获取加密实现。
您可以使用此方法强制在 openssl/自定义实现之间进行决定。
参数
-
Cake\Utility\Crypto\OpenSsl|null
$instance optional 要使用的加密实例。
返回
Cake\Utility\Crypto\OpenSsl
抛出
InvalidArgumentException
当没有可用的兼容加密扩展时。
hash() ¶ public static
hash(string $string, string|null $algorithm = null, string|bool $salt = false): string
使用给定方法从字符串创建哈希值。
参数
-
string
$string 要哈希的字符串
-
string|null
$algorithm optional 要使用的哈希算法(例如 sha1、sha256 等)。可以是 hash_algos() 返回的列表中包含的任何有效算法。如果没有传递值,则使用
Security::$hashType
指定的类型。-
string|bool
$salt optional 如果为 true,则会自动将 Security::getSalt() 返回的值追加到 $string。
返回
string
抛出
InvalidArgumentException
链接
insecureRandomBytes() ¶ public static
insecureRandomBytes(int $length): string
与上面的 randomBytes() 相似,但不是加密安全的。
参数
-
int
$length 您想要的字节数。
返回
string
另请参阅
randomBytes() ¶ public static
randomBytes(int $length): string
从安全来源获取随机字节。
如果此方法找不到安全的随机数据源,它将回退到不安全的来源并触发警告。
参数
-
int
$length 您想要的字节数。
返回
string
randomString() ¶ public static
randomString(int $length = 64): string
创建一个安全的随机字符串。
参数
-
int
$length optional 字符串长度。默认 64。
返回
string
setHash() ¶ public static
setHash(string $hash): void
为 Security 对象设置默认哈希方法。这会影响所有使用 Security::hash() 的对象。
参数
-
string
$hash 要使用的方法 (sha1/sha256/md5 等)
返回
void
另请参阅
setSalt() ¶ public static
setSalt(string $salt): void
设置用于加密/解密例程的 HMAC 盐。
参数
-
string
$salt 用于加密例程的盐。
返回
void