主要函数
openssl_encrypt
说明
代码语言:txt复制openssl_encrypt(
string $data,
string $cipher_algo,
string $passphrase,
int $options = 0,
string $iv = "",
string &$tag = null,
string $aad = "",
int $tag_length = 16
): string|false
以指定的方式和 key 加密数据,返回原始或 base64 编码后的字符串。
参数
data
待加密的明文信息数据。
cipher_algo
密码学方式。openssl_get_cipher_methods() 可获取有效密码方式列表。
passphrase
口令(passphrase)。 若 passphrase 比预期长度短,将静默用 NUL 填充; 若比预期长度更长,将静默截断。
options
options 是以下标记的按位或: OPENSSL_RAW_DATA 、 OPENSSL_ZERO_PADDING。
iv
非 NULL 的初始化向量。
tag
使用 AEAD 密码模式(GCM 或 CCM)时传引用的验证标签。
aad
附加的验证数据。
tag_length
验证 tag 的长度。GCM 模式时,它的范围是 4 到 16。
返回值
成功时返回加密后的字符串, 或者在失败时返回 false。
PHP实现代码
代码语言:txt复制<?php
/**
* Aes 对称加密
*/
class Aes {
const KEY = '123456';
const IV = ''; //IV参数必须是16位。
/**
* 加密
*/
public function encrypts($data)
{
//php7.1 以上版本用法
return base64_encode(openssl_encrypt($data, "AES-128-ECB", self::KEY, OPENSSL_RAW_DATA));
}
/**
* 解密
*/
public function decrypts($data)
{
//php7.1 以上版本用法
return openssl_decrypt(base64_decode($data), "AES-128-ECB", self::KEY, OPENSSL_RAW_DATA);
}
}
$aesModel = new Aes();
$str = 'hello world';
//加密
$encryptData = $aesModel->encrypts($str);
print($encryptData);
print('<hr>');
//解密
$decryptData = $aesModel->decrypts($encryptData);
print_r($decryptData);