Ale*_*ino 5 php encryption mcrypt
我正在使用PHP mcrypt库来MySQL使用AES 加密和存储()数据.
我想知道如果没有在我的代码中使用硬编码加密/解密密钥,是否有一种好方法可以做到这一点.
如果黑客能够访问我的服务器,他将能够在代码上看到文件和我的密钥,从而访问数据库上的所有数据.
谢谢.
我正在使用PHP
mcrypt库来MySQL使用AES 加密和存储()数据.
我想知道如果没有在我的代码中使用硬编码加密/解密密钥,是否有一种好方法可以做到这一点.
将其存储在文档根目录之外的配置文件中?例如,defuse/php-encryption.
如果黑客能够访问我的服务器,他将能够在代码上看到文件和我的密钥,从而访问数据库上的所有数据.
如果黑客可以访问您的服务器,则对称密钥加密无法保存您.但是,公钥加密可以保护机密性.
使用Halite,这很容易解决:
<?php
declare(strict_types=1);
use ParagonIE\Halite\{
Asymmetric\Crypto as Asymmetric,
KeyFactory
};
$publicKey = KeyFactory::loadEncryptionPublicKey("/path/to/public/key");
$encrypted = Asymmetric::seal("Whatever secret data we want", $publicKey);
// Now do whatever you need with $encrypted
Run Code Online (Sandbox Code Playgroud)
<?php
declare(strict_types=1);
use ParagonIE\Halite\{
Asymmetric\Crypto as Asymmetric,
KeyFactory
};
$salt = ""; // Generate from random_bytes(16) once, then persist.
$password = ""; // Create a strong password
$keyPair = KeyFactory::deriveEncryptionKeyPair($password, $salt);
$secretKey = $keyPair->getSecretKey();
$publicKey = $keyPair->getPublicKey();
// To have the public key to a file to upload to the server:
KeyFactory::save($publicKey, '/path/to/public/key');
$decrypted = Asymmetric::unseal($encrypted, $secretKey);
Run Code Online (Sandbox Code Playgroud)