首页 > 编程语言 >PHP加密之openssl加密

PHP加密之openssl加密

时间:2024-04-03 17:59:42浏览次数:16  
标签:加密 函数 openssl 解密 密钥 PHP 256

直接上代码


<?php
// 加密数据
function encryptData($data, $encryption_key, $iv){
    return openssl_encrypt($data, 'aes-256-cbc', $encryption_key, 0, $iv);
}

// 解密数据
function decryptData($data, $encryption_key, $iv){
    return openssl_decrypt($data, 'aes-256-cbc', $encryption_key, 0, $iv);
}

// 你的加密密钥
$encryption_key = openssl_random_pseudo_bytes(32);

// 初始化向量
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));

// 要加密的数据
$data = "Hello, World!";

// 加密数据
$encrypted = encryptData($data, $encryption_key, $iv);
echo "Encrypted: " . $encrypted . "\n";

// 解密数据
$decrypted = decryptData($encrypted, $encryption_key, $iv);
echo "Decrypted: " . $decrypted . "\n";
?>

解读

定义加密和解密函数

encryptData函数用于加密数据。它接受三个参数:要加密的数据($data)、加密密钥($encryption_key)和初始化向量($iv)。这个函数使用openssl_encrypt函数进行加密,采用的加密算法是aes-256-cbc。
decryptData函数用于解密数据。它也接受相同的三个参数,并使用openssl_decrypt函数进行解密,采用的解密算法与加密时相同。

生成加密密钥和初始化向量:

加密密钥($encryption_key)是通过openssl_random_pseudo_bytes函数生成的32字节(256位)随机数据。这个密钥用于AES-256加密,其中256位指的就是密钥的长度。
初始化向量($iv)是加密时必须的一个参数,它用于确保即便同一数据被加密多次,每次生成的加密文本也都不同。$iv的长度由加密算法决定,在这里使用openssl_cipher_iv_length函数确定aes-256-cbc算法所需的IV长度,然后通过openssl_random_pseudo_bytes函数生成对应长度的随机数据。

加密和解密数据:

要加密的数据($data)被定义为字符串"Hello, World!"。
使用encryptData函数和前面生成的密钥及IV对数据进行加密,加密后的结果存储在$encrypted变量中,并通过echo打印出来。
接着,使用decryptData函数、相同的密钥和IV对加密后的数据进行解密,解密后的结果存储在$decrypted变量中,并同样通过echo打印出来。
这段代码演示了使用AES-256-CBC加密算法进行安全数据加密和解密的完整过程。加密和解密使用的密钥和IV必须保持一致,否则解密过程将失败。此外,这个例子强调了加密密钥和初始化向量应该如何安全地生成和存储,这对保证加密过程的安全至关重要。

标签:加密,函数,openssl,解密,密钥,PHP,256
From: https://www.cnblogs.com/79524795-Tian/p/18113223

相关文章

  • phpstudy php8.2.9版本问题
    1、如果php8的扩展控制面板开启无效的话,可以手动开启试试2、php有报错日志:Fatalerror:Directive'track_errors'isnolongeravailableinPHPinUnknownonline0在切换php版本到更高版本时在终端查看php版本时报如下界面错误现在的环境是从php7版本切换到php8版本,所以......
  • C#-JavaScript-base64加密解码
    C#//base64加密//调用方式:Helper.EncodeToBase64(需要加密字符串)publicstaticstringEncodeToBase64(stringdata){byte[]byteData=Encoding.UTF8.GetBytes(data);returnConvert.ToBase64String(byteData);......
  • kettle使用MD5加密增量获取接口数据
    kettle使用MD5加密增量获取接口数据场景介绍:使用JavaScript组件进行MD5加密得到Httpheader,调用API接口增量获取接口数据,使用jsoninput组件解析数据入库案例适用范围:MD5加密可参考、增量过程可参考、调用API接口获取数据可参考、JsonInput组件使用可参考整个job设置......
  • EXE一机一码加密大师更新1.4.5,新增支持注销授权功能
    EXE一机一码打包加密大师是一款功能强大的工具,用于保护和加密EXE文件。它具有以下特性:一机一码授权:您可以为EXE文件添加一机一码认证,这意味着不同的电脑打开加密后的文件需要输入不同的激活码才能正常使用。这有助于保护您的文件安全,并方便向用户收费。静态密码:除了一机一码认证......
  • COMP3334项目端到端加密聊天
    OMP3334项目端到端加密聊天web应用程序2023/2024年第2学期如今,web服务是最重要的用户的常见应用程序形式暴露于。Web浏览器成为计算机上的流行应用程序使用户能够访问这些web服务。确保web服务的安全是对互联网至关重要。此外,隐私的一个重要特征现代。您的工作是实现端到端加密聊......
  • NestedSet NodeTrait.php
    1<?php23namespaceKalnoy\Nestedset;45useException;6useIlluminate\Database\Eloquent\CollectionasEloquentCollection;7useIlluminate\Database\Eloquent\Model;8useIlluminate\Database\Eloquent\Relations\......
  • 【升级高阶版PHP程序设计】——字符串
    ......
  • 文件传输加密
    文件传输加密(原理)文章目录文件传输加密(原理)背景介绍加密算法运用算法(非对称加密算法)算法进阶运用(对称加密+非对称加密算法)背景介绍一般的文件传输都是通过用户将文件上传到服务器,然后服务器传输到数据库中保存,当再次需要查阅该文件时只需要在数据库中查找,就......
  • 对二叉树深度优先遍历php算法实现的改进(先序遍历,中序遍历,后序遍历)
        树是一种数据结构,二叉树是一种特殊的树。二叉树的特点是每个结点最多有两个儿子。以某种特定顺序访问树中所有的节点称为树的遍历,今天在查看了这遍文章:https://www.cnblogs.com/ivy-zheng/p/10995492.html 中对树的遍历的实现之后我对其PHP遍历算法代码进行了重构,这次......
  • 【图像加密】基于RSA实现灰色、彩色图像加密解密(含秘钥)附Matlab代码
     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。......