登录
首页 >  文章 >  php教程

PHP命令行加密解密实战教程

时间:2026-01-28 12:22:46 203浏览 收藏

积累知识,胜过积蓄金银!毕竟在文章开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《PHP命令行加密解密方法详解》,就带大家讲解一下知识点,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

使用OpenSSL扩展实现PHP命令行加解密,通过AES-256-CBC算法加密数据,生成随机IV并结合密钥进行加密,解密时从数据中提取IV并还原原始内容。

PHP命令怎么实现数据加密解密_PHP加密解密函数命令行使用

在PHP中实现数据的加密和解密,可以通过内置的加密扩展(如OpenSSL或Sodium)来完成。虽然命令行下不能像Web环境那样自动处理请求,但你可以编写一个PHP脚本,在终端中通过php script.php的方式传入参数进行加解密操作。

使用OpenSSL进行加密解密(推荐方式)

OpenSSL是PHP中最常用的加密扩展,支持AES等安全算法。以下是一个可在命令行使用的加解密示例:

加密与解密函数示例:

<?php
function encrypt($data, $key) {
    $method = 'AES-256-CBC';
    $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length($method));
    $encrypted = openssl_encrypt($data, $method, $key, 0, $iv);
    return base64_encode($iv . $encrypted);
}

function decrypt($data, $key) {
    $data = base64_decode($data);
    $method = 'AES-256-CBC';
    $ivLength = openssl_cipher_iv_length($method);
    $iv = substr($data, 0, $ivLength);
    $encrypted = substr($data, $ivLength);
    return openssl_decrypt($encrypted, $method, $key, 0, $iv);
}

// 命令行参数处理
if ($argc 


<h3>命令行调用方法</h3>
<p>将上述代码保存为 <strong>crypto.php</strong>,然后在终端执行:</p>
  • 加密数据:
    php crypto.php encrypt "hello world" "mysecret"
  • 解密数据:
    php crypto.php decrypt "加密后的字符串" "mysecret"

注意:加密结果包含IV信息并经过Base64编码,可安全存储或传输。

使用Sodium(PHP 7.2+ 更安全的选择)

如果你的PHP环境支持sodium扩展(推荐),可以使用更现代的加密方式:

<?php
if (!extension_loaded('sodium')) {
    die('Sodium扩展未启用');
}

function sodium_encrypt($data, $key) {
    $key = substr(hash('sha256', $key, true), 0, 32);
    $nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
    $cipher = sodium_crypto_secretbox($data, $nonce, $key);
    return base64_encode($nonce . $cipher);
}

function sodium_decrypt($data, $key) {
    $data = base64_decode($data);
    $key = substr(hash('sha256', $key, true), 0, 32);
    $nonce = substr($data, 0, SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
    $cipher = substr($data, SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
    $plain = sodium_crypto_secretbox_open($cipher, $nonce, $key);
    return $plain === false ? '解密失败' : $plain;
}
?>

使用方式与OpenSSL版本一致,只需替换函数调用即可。

注意事项

  • 密钥不要直接使用明文,建议通过hash()派生固定长度密钥
  • 确保PHP已开启opensslsodium扩展
  • 加密结果包含随机IV,每次加密相同内容结果不同,这是正常现象
  • 命令行传参避免敏感信息被历史记录泄露,可改用STDIN读取
基本上就这些。只要写好脚本,命令行下使用PHP加解密非常方便。

本篇关于《PHP命令行加密解密实战教程》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于文章的相关知识,请关注golang学习网公众号!

前往漫画官网入口并下载 ➜
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>