我正在使用Laravel 4为我的网站开发一个私人消息系统,我想确保消息保持私密。到目前为止,我编写了以下代码:
class PkeyEncryption {
public static function encrypt($input, $cipher = MCRYPT_RIJNDAEL_128) {
$key = sha1(microtime(true) . mt_rand(10000, 90000));
$iv_size = mcrypt_get_size($cipher, MCRYPT_MODE_CFB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
return mcrypt_encrypt($cipher, $key, $input, MCRYPT_MODE_CFB, $iv);
}
public static function decrypt($data, $key, $cipher = MCRYPT_RIJNDAEL_128) {
$iv = $data['iv'];
$data = $data['data'];
return mcrypt_decrypt($cipher, $key, $data, MCRYPT_MODE_CFB, $iv);
}
}
所以,我知道如何加密消息,我也知道我可以将消息存储在IV旁边。但是,我不知道我应该在哪里存储公钥。我已经在网站上阅读了一些其他问题,但我仍然没有找到答案。有人可以指出我正确的方向吗?
答案 0 :(得分:1)
您必须在服务器上存储所有用户公钥,并且只有用户自己应拥有自己的私钥。
当用户A想要向用户B发送消息时,他将获取用户B公钥并用它加密消息。然后,只能使用用户B私钥解密此消息。