通过url传递的加密文本不解码Javascript

时间:2015-12-02 08:52:35

标签: javascript encryption url-encoding

我正在使用URL传递加密字符串,现在我可以解密它,因为加密字符串包含+符号。如何绕过这个,

我在Javascript中使用AES加密。

我的代码是,

<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js"></script>

window.location.href = "check.php?encr="+encodeURIComponent(CryptoJS.AES.encrypt(80,"qJB0rGtIn5UB1xG03efyCp"));

加密字符串为U2FsdGVkX184sTDp%2BB%2Bgpn07shpb6lqRzqTh4BLOMj4%3D

解密代码是,

var decrypted = CryptoJS.AES.decrypt("<?php echo urldecode($_GET["encr"]); ?>", "qJB0rGtIn5UB1xG03efyCp");

如何避免使用+符号。有没有解决方案。

2 个答案:

答案 0 :(得分:1)

$_GET中的值已经过URL解码。不要再解码它们,这是导致问题的原因。只需echo $_GET['encore']即可。

请注意,您还应该json_encode该值以确保您输出正确的Javascript语法:

.decrypt(<?php echo json_encode($_GET['encr']); ?>)

答案 1 :(得分:0)

我得到了答案

加密,

<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js"></script>

window.location.href = "check.php?encr="+CryptoJS.AES.encrypt(80,"qJB0rGtIn5UB1xG03efyCp");

解密,

<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js"></script>

$q = urlencode($_GET["encr"]);
$q = str_replace("+", "%2B",$q);
$q = urldecode($q);

var decrypted = CryptoJS.AES.decrypt("<?php echo $q; ?>", "qJB0rGtIn5UB1xG03efyCp");