如何在javascript中加密数据并在php中解密?

问题描述 投票:13回答:5

是否有任何可以对数据进行加密的javascript函数:例如,我想在ajax GET请求传递的URL中使用加密的数据,

http://sample.com/mypage/TDjsavbuydksabjcbhgy

其中TDjsavbuydksabjcbhgy等同于12345的加密数据。现在,我想通过解密在PHP中检索该数据,以便可以使用12345

有可能吗?或有关如何执行此操作的任何建议。

提前感谢。

php javascript security encryption
5个回答
9
投票

我不确定您通过使用javascript进行加密会获得什么。您的整个例程和加密密钥可以有效地向公众开放。如果您尝试防止嗅探,则应使用SSL。


5
投票

[您可以使用AES + Base64,在http://www.movable-type.co.uk/scripts/aes.html处有一个JS aes库,在http://www.movable-type.co.uk/scripts/aes-php.html中也应该可用。


5
投票

您可能正在寻找的是RSA加密。您生成一个供服务器使用的密钥,该密钥具有公共版本和私有版本。您的javascript将包含可用于加密数据的公共版本,而您的php将使用私有版本来解密数据。

作为起点,您可以从此处开始获取javascript公共/私有密钥示例:http://shop-js.sourceforge.net/crypto2.htm

这里是PHP方面:http://www.webtatic.com/blog/2009/07/php-public-key-cryptography/


3
投票

我认为您将必须使用SSL来加密所有内容。


0
投票

我发现(服务器和客户端之间的桥接)是完美的方法。使用php进行服务器端加密和解密不是问题。但是客户端和javascript加密意味着没有安全性,因为您的代码,加密密钥,算法以及所有内容都可供公共用户使用。(如上所述,我找到了这个答案和SSL使用)。最后,我用技巧对客户端和服务器端进行加密。您可以先在php脚本中加载随机加密密钥,然后在您的jquery中使用它,因此每个用户每个请求都有许多密钥,这对于同一请求很有用。此后加密的每个会话都是不可用的密钥。对于“最高安全性”,您可以扩展这个想法(由于某些安全性的目的,我无法描述更多,但是可以通过这种方式解决。)示例:index.php

 <?php

 $curl = curl_init();
 $url='http://some.xyz/keygen.php';
 ###we set url in a var to insure that anyone can't change it way.
 curl_setopt($curl, CURLOPT_URL, $url);
 curl_setopt($curl, CURLOPT_POST, true);        
 curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
  $reply=curl_exec($curl);
 //$reply-< session key is generated in another page and replied to this
  //ex :15984762255sadasf4a5sfd5asfda745
 ?>

客户端(相同index.php页面)-使用forgecryptojs进行加密:我们在jquery脚本中回显由php加密生成的随机生成的接收密钥,并对所有形式的输入执行此操作。**

<script>
     $('#form').find('input').each(function(){      
    rsa.keypair = keypair;
     var pemPublic = forge.pki.publicKeyToPem(<?php echo($reply); ?>,
   encoded=rsa.keypair.publicKey.encrypt($("#cleartext").val()),
    final = forge.util.encode64(encoded);
   </script>

由ajax发送Final,并由php解密服务器端。不要忘记您保留用于在数据库中解密的私钥或任何安全的解密位置。注意:您必须执行许多此类快捷方式才能实现100%的安全性。希望对您有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.