如何加密和存储私人消息?

时间:2014-09-01 21:38:31

标签: php encryption laravel-4 public-key-encryption

我正在使用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旁边。但是,我不知道我应该在哪里存储公钥。我已经在网站上阅读了一些其他问题,但我仍然没有找到答案。有人可以指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

您必须在服务器上存储所有用户公钥,并且只有用户自己应拥有自己的私钥。

当用户A想要向用户B发送消息时,他将获取用户B公钥并用它加密消息。然后,只能使用用户B私钥解密此消息。