Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript消息系统加密_Javascript_Php_Encryption_Rsa - Fatal编程技术网

JavaScript消息系统加密

JavaScript消息系统加密,javascript,php,encryption,rsa,Javascript,Php,Encryption,Rsa,我正在尝试用JavaScript和PHP/MySQL创建一个消息系统。我有一个带有两个输入元素(收件人id、消息内容)的表单。我正在使用MVC(Zend Framework 1)。表单post数据被发送到我的控制器并存储在数据库中 现在,我想在发送消息之前对其进行加密。我想让它对用户友好,所以我的想法是使用RSA(私钥/公钥)。其想法是在用户登录时生成私钥并存储在cookie中,以确保私钥仅在用户的机器上。公钥可以存储在用户的表中,以便任何想要向其发送消息的用户都可以加密数据 重要的是,密钥对由

我正在尝试用JavaScript和PHP/MySQL创建一个消息系统。我有一个带有两个输入元素(收件人id、消息内容)的表单。我正在使用MVC(Zend Framework 1)。表单post数据被发送到我的控制器并存储在数据库中

现在,我想在发送消息之前对其进行加密。我想让它对用户友好,所以我的想法是使用RSA(私钥/公钥)。其想法是在用户登录时生成私钥并存储在cookie中,以确保私钥仅在用户的机器上。公钥可以存储在用户的表中,以便任何想要向其发送消息的用户都可以加密数据

重要的是,密钥对由用户的密码生成。如果是随机生成的,就不可能使用多个系统登录,因为私钥每次都会更改。因此,这将是一种机制,以确保在他更改密码之前,他始终拥有相同的私钥

我尝试了一些JavaScript库。似乎是正确的选择,因为它通过密码生成私钥/公钥。这里的问题是,我不能存储私钥,甚至不能查看值

他们在网站上有一个例子

// The passphrase used to repeatably generate this RSA key.
var PassPhrase = "The Moon is a Harsh Mistress."; 

// The length of the RSA key, in bits.
var Bits = 1024; 

var MattsRSAkey = cryptico.generateRSAKey(PassPhrase, Bits);
当我试图输出MattsRSAkey时,我只得到[Object]。当我把它储存在饼干里时也是一样的。我尝试使用JSON.stringify。有了这个功能,我可以存储和查看MattsRSAKey内部。但是当我以后想用它来解密消息时,我得到一个错误,我没有有效的公钥。我想私钥在存储时坏了。当我从Cookies中读取私钥时,我使用JSON.parse


有什么办法解决我的问题吗?我只想从多个用户(公钥)向一个用户(私钥)发送加密消息。我的目的不是要有一个安全的传输,而是将加密的信息存储在数据库中,以便未经授权的人无法阅读。重要的是,我不仅拥有一对一消息的加密功能。这很容易,因为两个用户只需要共享一个密码就可以进行加密。

这里有两个问题

首先,您试图将Javascript对象直接存储在cookie中。这行不通:cookies只能存储字符串值。您需要将密钥序列化为字符串以将其存储在cookie中;不幸的是,cryptico库似乎没有公开任何方法来实现这一点,因此您需要实现自定义序列化程序,或者使用另一个加密库

其次,您正在cookies中存储私有加密密钥数据。这可能是最糟糕的存储位置,因为每次请求时都会将cookie发送到web服务器。在这里更合适,因为它只能从Javascript代码访问