<?php
// ****************************************************************************
// testbed for encrypt/decrypt routines
// ****************************************************************************
// Author: A J Marston
// Date: June 2003
// Amendments:
// April 2023 - amend htmlentities() to cast NULL input into a string.
// ****************************************************************************
if (function_exists('debugbreak')) {
// debugBreak();
} // if
if ($_SERVER['REQUEST_METHOD'] == 'GET') {
$url = parse_url($_SERVER['REQUEST_URI']);
if ($url['path'] != $_SERVER['PHP_SELF']) {
// somebody is screwing with the URL! Posasible XSS attack!
header('Location: ' .$_SERVER['SCRIPT_NAME']);
exit;
} // if
} // if
require 'std.encryption.class.inc';
$crypt = new encryption_class;
ini_set('session.bug_compat_warn', 0);
session_start();
$errors = array();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$key = &$_POST['key'];
$password = &$_POST['password'];
$pswdlen = &$_POST['pswdlen'];
$crypt->setPswdLen($pswdlen);
$adj = &$_POST['adj'];
$crypt->setAdjustment($adj);
$mod = &$_POST['mod'];
$crypt->setModulus($mod);
if ($crypt->errors) {
$errors = $crypt->errors;
} // if
} else {
unset($_SESSION['encrypt_result']);
unset($_SESSION['decrypt_result']);
$key = NULL;
$password = NULL;
$pswdlen = 24;
} // if
if (empty($errors)) {
$adj = $crypt->getAdjustment();
$mod = $crypt->getModulus();
} // if
$encrypt_result = &$_SESSION['encrypt_result'];
$decrypt_result = &$_SESSION['decrypt_result'];
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Test Encryption/Decryption routines</title>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8">
</head>
<body>
<div align="center">
<h1>Test Encryption/Decryption routines</h1>
<?php
if (empty($errors)) {
if (isset($_POST['encrypt'])) {
$encrypt_result = $crypt->encrypt($key, $password, $pswdlen);
$errors = $crypt->errors;
$_SESSION['encrypt_result'] = $encrypt_result;
} // if
if (isset($_POST['decrypt'])) {
if (empty($encrypt_result) AND !empty($password)) {
// decrypt an already encrypted password
$decrypt_result = $crypt->decrypt($key, $password);
$encrypt_result = $password;
$password = $decrypt_result;
} else {
$decrypt_result = $crypt->decrypt($key, $encrypt_result);
} // if
$errors = $crypt->errors;
$_SESSION['decrypt_result'] = $decrypt_result;
} // if
} // if
?>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST">
<table>
<tr><td>Enter Key:</td><td><input type="text" name="key" size="40" value="<?php echo $key ?>"></td></tr>
<tr><td>Enter Password:</td><td><input type="text" name="password" size="40" value="<?php echo $password ?>"></td></tr>
<tr><td>Enter Password Length:</td><td><input type="text" name="pswdlen" size="4" value="<?php echo $pswdlen ?>"> (positive integer)</td></tr>
<tr><td>Enter Adjustment:</td><td><input type="text" name="adj" size="4" value="<?php echo $adj ?>"> (numeric)</td></tr>
<tr><td>Enter Modulus:</td><td><input type="text" name="mod" size="4" value="<?php echo $mod ?>"> (positive integer)</td></tr>
<tr><td><input type="submit" name="encrypt" value="encrypt"></td>
<td><?php echo htmlentities((string)$encrypt_result) ?></td></tr>
<tr><td><input type="submit" name="decrypt" value="decrypt"></td>
<td><?php echo htmlentities((string)$decrypt_result) ?></td></tr>
</table>
<p style="color:red;">
<?php
foreach ($errors as $error) {
echo $error .'<br/>';
} // foreach
?>
</p>
</form>
</div>
</body>
</html>