Move Passwords from Check to Security and deprecate old Add new SymmetricEncryption and CreateKey CreateKey class just creates keys for the SymmetricEncryption SymmetricEncryption uses the hex2bin calls to convert the hex key to the internal binary key Example: $key = CreateKey::generateRandomKey(); $encrypted = SymmetricEncryption::encrypt($string, $key); $decrypted = SymmetricEncryption::decrypt($encrypted, $key); Above $key must be stored in some secure location (.env file)
112 lines
2.8 KiB
PHP
112 lines
2.8 KiB
PHP
<?php // phpcs:ignore warning
|
|
|
|
/**
|
|
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
|
|
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
|
|
$DEBUG_ALL = true;
|
|
$PRINT_ALL = true;
|
|
$DB_DEBUG = true;
|
|
|
|
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
|
|
ob_start();
|
|
|
|
// basic class test file
|
|
define('USE_DATABASE', false);
|
|
// sample config
|
|
require 'config.php';
|
|
// define log file id
|
|
$LOG_FILE_ID = 'classTest-encryption';
|
|
ob_end_flush();
|
|
|
|
use CoreLibs\Security\SymmetricEncryption;
|
|
use CoreLibs\Security\CreateKey;
|
|
|
|
$log = new CoreLibs\Debug\Logging([
|
|
'log_folder' => BASE . LOG,
|
|
'file_id' => $LOG_FILE_ID,
|
|
// add file date
|
|
'print_file_date' => true,
|
|
// set debug and print flags
|
|
'debug_all' => $DEBUG_ALL,
|
|
'echo_all' => $ECHO_ALL ?? false,
|
|
'print_all' => $PRINT_ALL,
|
|
]);
|
|
|
|
|
|
// define a list of from to color sets for conversion test
|
|
|
|
$PAGE_NAME = 'TEST CLASS: ENCRYPTION';
|
|
print "<!DOCTYPE html>";
|
|
print "<html><head><title>" . $PAGE_NAME . "</title><head>";
|
|
print "<body>";
|
|
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
|
print '<div><h1>' . $PAGE_NAME . '</h1></div>';
|
|
|
|
$key = CreateKey::generateRandomKey();
|
|
print "Secret Key: " . $key . "<br>";
|
|
|
|
$string = "I a some deep secret";
|
|
$encrypted = SymmetricEncryption::encrypt($string, $key);
|
|
$decrypted = SymmetricEncryption::decrypt($encrypted, $key);
|
|
|
|
print "Original: " . $string . "<br>";
|
|
print "Encrypted: " . $encrypted . "<br>";
|
|
print "Decrytped: " . $decrypted . "<br>";
|
|
|
|
print "<br>WRONG CIPHERTEXT<br>";
|
|
try {
|
|
$decrypted = SymmetricEncryption::decrypt('flupper', $key);
|
|
} catch (Exception $e) {
|
|
print "Error: " . $e->getMessage() . "<br>";
|
|
}
|
|
|
|
print "<br>SHORT and WRONG KEY<br>";
|
|
$key = 'wrong_key';
|
|
try {
|
|
$encrypted = SymmetricEncryption::encrypt($string, $key);
|
|
} catch (Exception $e) {
|
|
print "Error: " . $e->getMessage() . "<br>";
|
|
}
|
|
|
|
print "<br>INVALID HEX KEY<br>";
|
|
$key = '1cabd5cba9e042f12522f4ff2de5c31d233b';
|
|
try {
|
|
$encrypted = SymmetricEncryption::encrypt($string, $key);
|
|
} catch (Exception $e) {
|
|
print "Error: " . $e->getMessage() . "<br>";
|
|
}
|
|
|
|
print "<br>WRONG KEY TO DECRYPT<br>";
|
|
$key = CreateKey::generateRandomKey();
|
|
$string = "I a some deep secret";
|
|
$encrypted = SymmetricEncryption::encrypt($string, $key);
|
|
$key = CreateKey::generateRandomKey();
|
|
try {
|
|
$decrypted = SymmetricEncryption::decrypt($encrypted, $key);
|
|
} catch (Exception $e) {
|
|
print "Error: " . $e->getMessage() . "<br>";
|
|
}
|
|
|
|
print "<br>WRONG KEY TO DECRYPT<br>";
|
|
$key = CreateKey::generateRandomKey();
|
|
$string = "I a some deep secret";
|
|
$encrypted = SymmetricEncryption::encrypt($string, $key);
|
|
$key = 'wrong_key';
|
|
try {
|
|
$decrypted = SymmetricEncryption::decrypt($encrypted, $key);
|
|
} catch (Exception $e) {
|
|
print "Error: " . $e->getMessage() . "<br>";
|
|
}
|
|
|
|
// error message
|
|
print $log->printErrorMsg();
|
|
|
|
print "</body></html>";
|
|
|
|
// __END__
|