<?
function generate_random($n){
$bytes = openssl_random_pseudo_bytes($n, $cstrong);
$hex = bin2hex($bytes);
if($cstrong) return $hex;
else die('Error');
}
class E_userside {
var $password;
var $signup_salt;
var $p;
function createUniqueIV(){
return generate_random(8);
}
function createUserSalt(){
return generate_random(300);
}
function fetchPubKey(){
$this->p=openssl_pkey_get_public(file_get_contents('publickey'));
}
function encrypt($message){
$iv=$this->createUniqueIV();
$dk=generate_random(32);
$uk_ = $dk ^ $this->getuk();
openssl_public_encrypt($dk, $dk_,$this->p);
return base64_encode(serialize(array('cipher'=>openssl_encrypt ($message, 'aes192', $dk, false,$iv),'iv'=>$iv, 'uk_'=>$uk_, 'dk_'=>$dk_)));
}
function decrypt($result){
$array=unserialize(base64_decode($result));
$uk=$this->getuk();
$dk=$array['uk_']^$uk;
return openssl_decrypt ($array['cipher'], 'aes192', $dk, false,$array['iv']);
}
}
######################ADMIN
class E_adminside {
var $P;
function createUniqueIV(){
return generate_random(8);
}
function fetchPrivateKey(){
$this->P=openssl_pkey_get_private(file_get_contents('privatekey'));
}
function encryptComment($message,$params){
openssl_private_decrypt($params['dk_'], $dk,$this->P);
$iv=$this->createUniqueIV();
return array('cipher'=>openssl_encrypt ($message, 'aes192', $dk, false,$iv),'iv'=>$iv, 'uk_'=>$params['uk_'], 'dk_'=>$params['dk_']);
}
function decrypt($data){
$array=unserialize(base64_decode($data));
openssl_private_decrypt($array['dk_'], $dk,$this->P);
return openssl_decrypt ($array['cipher'], 'aes192', $dk, false,$array['iv']);
}
}
?>