Encrypt Session Data
(Appendix C, Cryptography - Pg 102-103)
< Back to Code Repository
<?php
function _read($id)
{
global $_sess_db;
$id = mysql_real_escape_string($id);
$sql = "SELECT data
FROM sessions
WHERE id = '$id'";
if ($result = mysql_query($sql, $_sess_db))
{
$record = mysql_fetch_assoc($result);
$data = base64_decode($record['data']);
$iv_size = mcrypt_get_iv_size($algorithm, $mode);
$ciphertext = substr($data, $iv_size);
$iv = substr($data, 0, $iv_size);
$crypt = new crypt();
$crypt->iv = $iv;
$crypt->ciphertext = $ciphertext;
$crypt->decrypt();
return $crypt->cleartext;
}
return '';
}
function _write($id, $data)
{
global $_sess_db;
$access = time();
$crypt = new crypt();
$crypt->cleartext = $data;
$crypt->generate_iv();
$crypt->encrypt();
$ciphertext = $crypt->ciphertext;
$iv = $crypt->iv;
$data = base64_encode($iv . $ciphertext);
$id = mysql_real_escape_string($id);
$access = mysql_real_escape_string($access);
$data = mysql_real_escape_string($data);
$sql = "REPLACE
INTO sessions
VALUES ('$id', '$access', '$data')";
return mysql_query($sql, $_sess_db);
}
?>