php 加解密处理openssl_decrypt

基础定义

openssl_encrypt

# 以指定的方式和 key 加密数据,返回原始或 base64 编码后的字符串
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


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。

openssl_decrypt

# 采用原始或base64编码的字符串,并使用给定的方法和密钥对其进行解密
openssl_decrypt(
    string $data,
    string $method,
    string $key,
    int $options = 0,
    string $iv = "",
    string $tag = "",
    string $aad = ""
): string

data
将被解密的密文。

method
加密算法,使用openssl_get_cipher_methods()函数获取可用的加密算法列表。

key
密钥。

options
options can be one of OPENSSL_RAW_DATA, OPENSSL_ZERO_PADDING.

iv
非空的初始化向量。

tag
AEAD密码模式中的身份验证标签。 如果是错误的,验证失败,函数返回false.

aad
额外的认证数据。
操作
<?php
$arr = ['a'=>1, 'b'=>2];
$data = json_encode($arr);//加密明文
   $method = 'DES-ECB';//加密方法
   $passwd = '12344321';//加密密钥
   $options = 0;//数据格式选项(可选)
   $iv = '';//加密初始化向量(可选)

$result = openssl_encrypt($data, $method, $passwd, $options);
var_dump($result);

$res = openssl_decrypt($result, $method, $passwd, $options);
var_dump($res);
var_dump(json_decode($res, true));
结果
string(24) "GJv+LHgxK4NZzNFcjfJPhg=="
string(13) "{"a":1,"b":2}"
array(2) {
  ["a"]=>
  int(1)
  ["b"]=>
  int(2)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值