データベース内の暗号化されたフィールドを検索できるかどうかを考えているだけです.
例:
データベース内の暗号化されたテキスト: "7724bd4ae7cba2c8d182980c7889258b07be344a9c8892de3c303ae03677771c"
解読されたテキスト: "Jackey"
"Jac" で始まる、または含まれるデータベース内の暗号化されたすべてのフィールドを検索します。
ナトリウムを使用して、固定ナンスで値を暗号化/復号化します (例で使用)
<?php
define("VALUE_ENCRYPTION_KEY", hex2bin("01abff4e1bbb9104e8e053bcc0492ad114ee7cbdc8597e4e5296e86c44a66bf0"));
define("VALUE_ENCRYPTION_NONCE", hex2bin('c1126da4358e7e4173f2ccc621dd1801a5949ae9f1896e43'));
define("VALUE_ENCRYPTION_BLOCK_SIZE", 16);
function EncryptValue($value)
{
if (!empty($value)) {
$padded_value = sodium_pad($value, VALUE_ENCRYPTION_BLOCK_SIZE);
$encrypted_value = sodium_crypto_secretbox($padded_value, VALUE_ENCRYPTION_NONCE, VALUE_ENCRYPTION_KEY);
return bin2hex($encrypted_value);
} else {
return null;
}
}
function DecryptValue($value)
{
if (!empty($value)) {
$decrypted_padded_value = sodium_crypto_secretbox_open(hex2bin($value), VALUE_ENCRYPTION_NONCE, VALUE_ENCRYPTION_KEY);
$decrypted_value = sodium_unpad($decrypted_padded_value, VALUE_ENCRYPTION_BLOCK_SIZE);
return $decrypted_value;
} else {
return null;
}
}