2013-03-04 106 views
3

我在JavaScript中使用JSBN来加密一组字符串(消息)的fa​​cebook数据,以安全地将它们发送到我的服务器(PHP)并在那里解密它们。RSA消息太长Javascript JSBN

一些用户遇到“消息太长”上像

"&fbemail='+fbemail+'&gender='+fbgender+'&birthday='+fbbirthday+'&name='+fbname+'&surname='+fbsurname+'&fbuser='+fbuserid" 

我已经通过生成一个私钥:

$privateKey = openssl_pkey_new(array(
      'private_key_bits' => 1024, 
      'private_key_type' => OPENSSL_KEYTYPE_RSA, 
     )); 

为什么我会收到该消息?消息不那么长。

我已经看了下面的文章,但我不明白如何在没有AES口令的情况下使用JavaScript中的AES。

RSA Encryption Problem [Size of payload data]

+2

你能不能简单地做AJAX在HTTPS之后? – 2013-03-04 16:48:52

+0

您是否使用GET请求? – 2013-03-04 16:49:21

+0

Marcel - 是的,我在我的服务器上使用GET。 – malteseKnight 2013-03-04 16:58:04

回答

2

在不产生对称密钥和加密完整的消息?使用更大的钥匙。 1024位密钥只能加密117个字节而没有某种填充,但2048位密钥最多可处理245个字节,而4096位密钥最多可达501个字节。这可能会使脚本处理更大且重音的名称(非ASCII字符每个字符使用两个或更多字节)。

我结束了一个类似的问题,但Thoman Pornin回答RSA Encryption Problem [Size of payload data]很好地解释了这种限制的原因。

也放弃了在几个加密组块分头消息读取(下同)托马斯Pornin答案Does RSA padding have to be unpredictable if the payload is?