PHP实现AES加密解密

2021-09-07 14:38:18 浏览数 (1)

主要函数

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);

0 人点赞