PHP 早期版本的 mcrypt 扩展提供 加密/解密 功能。由于缺乏维护,现在 mycrypt 扩展已被弃用,并从 PHP 7.2 版本开始删除。PHP 现在最新支持 OpenSSL 库,该库具有支持加密和解密功能的广泛功能。
OpenSSL 支持各种加密算法,例如 AES(高级加密标准)。所有支持的算法都可以通过调用 openssl_get_cipher_methods() 函数来获得。
OpenSSL 扩展中的两个重要功能是 -
- openssl_encrypt() − 加密数据
- openssl_decrypt() - 解密数据
openssl_encrypt() 函数
openssl_encrypt() 函数使用给定的方法和密钥加密给定的数据,并返回原始或 base64 编码的字符串 -
openssl_encrypt() 函数具有以下参数 -
参数 | 描述 |
---|---|
data | 需要加密的明文消息数据。 |
cipher_algo | 密码方法。 |
passphrase | 密码。如果密码短于预期,则填充 NULL 字符;如果密码长度超过预期,则将被截断。 |
options | options 是标志 OPENSSL_RAW_DATA 和 OPENSSL_ZERO_PADDING 的按位析取。 |
iv | 非 NULL 初始化向量。 |
tag | 使用 AEAD 密码模式(GCM 或 CCM)时通过引用传递的身份验证标签。 |
aad | 其他经过身份验证的数据。 |
tag_length | 身份验证标记的长度。对于 GCM 模式,其值可以介于 4 和 16 之间。 |
openssl_encrypt() 函数在成功时返回加密字符串,在失败时返回 false。
openssl_decrypt() 函数
openssl_decrypt() 函数采用原始字符串或 base64 编码的字符串,并使用给定的方法和密钥对其进行解密。
openssl_decrypt() 函数使用与 openssl_encrypt() 函数相同的参数。
openssl_decrypt() 函数在成功时返回解密的字符串,在失败时返回 false。
例子
请看下面的例子 -
将产生以下输出 -
加密前:PHP:超文本预处理器
加密字符串:
解密字符串:
加密字符串:
解密字符串: