defuse/php-encryption 是一个可用于加密和解密数据的库。着手开始加密和解密数据相当简单。他们有一个很棒的tutorial来帮助解释如何使用该库的基础知识,以及有关加密的重要安全影响。
使用 composer 很容易进行安装。
composer require defuse/php-encryption
然后,您需要生成一个加密密钥。
vendor/bin/generate-defuse-key
这将输出一个您需要妥善保管的密钥。您可以将密钥保存在您的app/config/config.php文件中的数组底部。虽然这不是完美的位置,但至少是一个选项。
app/config/config.php
现在您拥有该库和一个加密密钥,您可以开始加密和解密数据。
use Defuse\Crypto\Crypto; use Defuse\Crypto\Key; /* * 在您的引导文件或 public/index.php 中设置 */ // 加密方法 Flight::map('encrypt', function($原始数据) { $加密密钥 = /* $config['encryption_key'] 或者是存放密钥位置的 file_get_contents */; return Crypto::encrypt($原始数据, Key::loadFromAsciiSafeString($加密密钥)); }); // 解密方法 Flight::map('decrypt', function($加密数据) { $加密密钥 = /* $config['encryption_key'] 或者是存放密钥位置的 file_get_contents */; try { $原始数据 = Crypto::decrypt($加密数据, Key::loadFromAsciiSafeString($加密密钥)); } catch (Defuse\Crypto\Exception\WrongKeyOrModifiedCiphertextException $ex) { // 一种攻击!加载了错误的密钥,或者自创建以来,密文已更改--在数据库中已损坏或Eve试图执行攻击时故意修改。 // ...以适合您的应用程序的方式处理这种情况... } return $原始数据; }); Flight::route('/encrypt', function() { $加密数据 = Flight::encrypt('这是一个机密'); echo $加密数据; }); Flight::route('/decrypt', function() { $加密数据 = '...'; // 从某处获取加密数据 $解密数据 = Flight::decrypt($加密数据); echo $解密数据; });