PHP异或加密只能加第一个字母,为什么 $str="abcdefg";$key='Z';$str ^= $key;$str ^= $key;echo $str;//结果为a$str是个变量,长度是可变的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你得循环for ($i = 0; $i < strlen($str); $i ++){ $str[$i] ^= $key[0];} 异或是按位与,数目不一样的话,后面的相当于与NULL异或。<?php$str="abcdefg";$key='Z ';$str ^= $key;$str ^= $key;echo $str;//结果为abcdegfecho "<br>";$str="abcdefg";$key='ZABCDER';$str ^= $key;$str ^= $key;echo $str;//结果为abcdegfecho "<br>";$str="abcdefg";$key='Z'.NULL.NULL.NULL.NULL.NULL.NULL;$str ^= $key;$str ^= $key;echo $str;//a Fatal error: Cannot use assign-op operators with overloaded objects nor string offsets in F:\CoreSec\CS\interface\index.php on line 11 呵呵,我明白位数相等时可以成功,但是$str长度是变的(字符由java加密的,我需要解密),我总不能在key后面动态加NULL吧 for ($i = 0; $i < strlen($str); $i ++){ $str[$i] = $str[$i] ^ $key[0];}这样呢 不确定数字的话,可以循环异或。for ($i = 0; $i < strlen($str); $i ++){ $str{$i} = $str{$i} ^ "Z";} 看你描述像是简单异或,应该类似以下解密。$i = 0;$l = strlen($key);while(isset($str{$i})){ $str{$i} ^= $key[$i % $l]; $i++;} 你俩都对了,谁给我解释一下为什么做在这个小问题上//郁闷,C++ Java都支持,难道PHP支持不好刚刚的如果改为:$str{$i} ^= 'a';这样就行,这在c++和java 都是合法的但我用PHP测试了一下$a=5;$b=10;echo $a+=$b;//15 靠,又好使了为什么(1)另外$str[1]与$str{1}有什么区别 (2)准备结贴 对于数组 $arr[$i] 表示数组的第$i个元素对于字符串,$arr{$i}指的是字符串的第$i个字符。 就是你啦,你有机会试一下$a ^= $b 不等于 $a = $a^$b;呵呵但是+=是可以的 我可以很负责人的告诉你结果是一样的<?php//案例1$a='aa';$b='bb';echo $a=$a^$b;echo $a=$a^$b;echo "<br>";//案例2$a='aa';$b='bb';echo $a^=$b;echo $a^=$b;?> $str="hello world!";for ($i = 0; $i < strlen($str); $i ++){$str[$i] ^= 'Z';//你再改成$str[$i] = $str[$i]^'Z';}echo $str;你测试下这个试试 php图片遍历横排改竖排? smarty的问题,输出运算结果 apache2.2+mysql+php5 的郁闷问题,解决后立即给分,不够在加 有3个函数的定义看不懂? 全文检索一个表中的多个字段,在线等 youku每个视频播放完之后的翻页原理 session的内空为什么变空了?在线等! Apache醒目!!!!!!!!!! php和mysql的送分问题 显示文件夹图片 怎么在路径中传入变量 PHP广告代码怎么写? phpExcelReader导入问题
for ($i = 0; $i < strlen($str); $i ++)
{
$str[$i] ^= $key[0];
}
<?php
$str="abcdefg";
$key='Z ';
$str ^= $key;
$str ^= $key;
echo $str;//结果为abcdegf
echo "<br>";
$str="abcdefg";
$key='ZABCDER';
$str ^= $key;
$str ^= $key;
echo $str;//结果为abcdegf
echo "<br>";$str="abcdefg";
$key='Z'.NULL.NULL.NULL.NULL.NULL.NULL;
$str ^= $key;
$str ^= $key;
echo $str;//a
{
$str[$i] = $str[$i] ^ $key[0];
}
这样呢
不确定数字的话,可以循环异或。
for ($i = 0; $i < strlen($str); $i ++){
$str{$i} = $str{$i} ^ "Z";
}
$i = 0;
$l = strlen($key);
while(isset($str{$i}))
{
$str{$i} ^= $key[$i % $l];
$i++;
}
刚刚的如果改为:
$str{$i} ^= 'a';这样就行,这在c++和java 都是合法的
但我用PHP测试了一下
$a=5;
$b=10;
echo $a+=$b;//15 靠,又好使了为什么(1)
另外$str[1]与$str{1}有什么区别 (2)
准备结贴
对于数组 $arr[$i] 表示数组的第$i个元素
对于字符串,$arr{$i}指的是字符串的第$i个字符。
//案例1
$a='aa';
$b='bb';
echo $a=$a^$b;
echo $a=$a^$b;echo "<br>";
//案例2
$a='aa';
$b='bb';
echo $a^=$b;
echo $a^=$b;
?>
for ($i = 0; $i < strlen($str); $i ++)
{
$str[$i] ^= 'Z';//你再改成$str[$i] = $str[$i]^'Z';
}
echo $str;
你测试下这个试试