2015-12-02 41 views
0

我傳遞一個使用URL的加密字符串,現在我可以解密它,因爲加密的字符串包含+符號。如何繞過此,通過url傳遞加密文本不解碼Javascript

我在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"); 

如何避免+符號。有沒有解決辦法。

回答

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"); 
1

$_GET中的值已被URL解碼。不要再解碼他們,這是什麼導致你的問題。只需echo $_GET['encore']即可。

請注意,您也json_encode值應以確保您正確輸出JavaScript語法:

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

話雖如此,我會質疑你在加密方面做了什麼的核心前提,但我保留對此的判斷...... – deceze