是否有任何可以加密数据的javascript函数:例如我想在我的URL中使用加密数据通过ajax GET请求传递,
http://sample.com/mypage/TDjsavbuydksabjcbhgy
其中 TDjsavbuydksabjcbhgy 相当于 12345 的加密数据。 现在我想通过解密来检索PHP中的数据,以便我可以使用 12345 。
有可能吗?或者有关如何做到这一点的任何建议。
提前致谢。
答案 0 :(得分:9)
我不确定你在javascript中加密会得到什么。您可以向公众有效地使用您的整个例行程序和加密密钥。如果您试图防止嗅探,则应使用SSL。
答案 1 :(得分:5)
你可以使用AES + Base64,在http://www.movable-type.co.uk/scripts/aes.html有一个JS aes库,在php中也可以使用http://www.movable-type.co.uk/scripts/aes-php.html。
答案 2 :(得分: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 :(得分:3)
我认为您必须使用SSL来加密所有内容。
答案 4 :(得分: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页面)-使用 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%安全。 希望能有所帮助。