我试图在中加密/解密由随机函数生成的$session_key字符串。它可以工作,但不是所有的字符串。对于一些$session_key,例如,结果是不同的。您可以看到打开浏览器控制台的结果。
<?php
function xor_this($str, $key) {
$result = '';
for ($i = 0; $i < strlen($str); $i++) {
$tmp = $str[$i];
for ($j = 0; $j < strlen($key); $j++) {
$tmp = chr(ord($tmp) ^ ord($key[$j]));
}
$result .= $tmp;
}
return $result;
}
#session_key generated by substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, 40)
$session_key = 'h9PYAE6KceX5g7081SnjCFBpVfux3bRtmdyDWwHq';
$password = '9b06a9342b5ac4a825088a0f0c2a2e7cc091393f';
echo xor_this($session_key, $password);
?>
<html>
<script>
function xor_this(str,key)
{
var xor = "";
for (var i = 0; i < str.length; ++i) {
tmp = str[i];
for(var j = 0; j < key.length; ++j) {
tmp = String.fromCharCode(tmp.charCodeAt(0) ^ key.charCodeAt(j));
}
xor += tmp;
}
return xor;
}
var session_key = '<?php echo $session_key?>';
var password = '<?php echo $password?>';
console.log(xor_this(session_key,password));
</script>
</html>
发布于 2013-07-31 06:20:38
对于给定的$session_key
,PHP和JavaScript的结果是相同的。
PHP生成:g6_VNJ9DljW:h8?7>\aeLIMYizw<m]{bkvKXxG~
JavaScript生产:g6_VNJ9DljW:h8?7>\aeLIMYizw<m]{bkvKXxG~
请注意,<
将启动一个新的HTML,浏览器将不会在页面上显示其余的输出。您必须使用“查看源”来查看它,或者在输出结果之前让程序调用htmlspecialchars
。
顺便说一句,这并不是什么加密:一个长密码不会提供任何额外的保护,因为所有的字符都是XORed。例如,$password=chr(15)
给出的结果与当前密码相同。
https://stackoverflow.com/questions/17972795
复制