是否有任何可以对数据进行加密的javascript函数:例如,我想在ajax GET请求传递的URL中使用加密的数据,
http://sample.com/mypage/TDjsavbuydksabjcbhgy
其中TDjsavbuydksabjcbhgy等同于12345的加密数据。现在,我想通过解密在PHP中检索该数据,以便可以使用12345。
有可能吗?或有关如何执行此操作的任何建议。
提前感谢。
我不确定您通过使用javascript进行加密会获得什么。您的整个例程和加密密钥可以有效地向公众开放。如果您尝试防止嗅探,则应使用SSL。
[您可以使用AES + Base64,在http://www.movable-type.co.uk/scripts/aes.html处有一个JS aes库,在http://www.movable-type.co.uk/scripts/aes-php.html中也应该可用。
您可能正在寻找的是RSA加密。您生成一个供服务器使用的密钥,该密钥具有公共版本和私有版本。您的javascript将包含可用于加密数据的公共版本,而您的php将使用私有版本来解密数据。
作为起点,您可以从此处开始获取javascript公共/私有密钥示例:http://shop-js.sourceforge.net/crypto2.htm
这里是PHP方面:http://www.webtatic.com/blog/2009/07/php-public-key-cryptography/
我认为您将必须使用SSL来加密所有内容。
我发现(服务器和客户端之间的桥接)是完美的方法。使用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页面)-使用forge或cryptojs进行加密:我们在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%的安全性。希望对您有所帮助。