BQMBDAAABQYFBA==java 得什么?

解决方案 »

  1.   

    JAVA中异或后得到的很多不可见字符。没办法显示。
    如 String a= 1149395524  转换为byte[]=[49, 49, 52, 57, 51, 57, 53, 53, 50, 52]  转换二进制为 [110001, 110001,110100,111001,110011, 111001,110101,110101,110010,110100]
    如 String b= 4255390370  转换为byte[]=[52, 50, 53, 53, 51, 57, 48, 51, 55, 48]  转换二进制为 [110100, 110010,110101,110101,110011, 111001,110000,110011,110111,110000]
    按照公式(a XOR b) 应该得出byte[]=[5, 3, 1, 12, 0, 0, 5, 6, 5, 4]  将这个转换为String类型为不可见字符串
     PHP中得到的结果:[5, 3, 1, 12, 7, 11, 0, 0, 1, 13]   高人解释下
      

  2.   

    测试数据$text=“1149395524”,$key=“4255390370”//xor
    function my_xor($text,$key)
    {
        $i = 0;
        $encrypted = "";
        foreach (str_split($text) as $char) {
            $encrypted .= chr(ord($char) ^ ord($key{$i++ % strlen($key)}));
        }
        return $encrypted;
    }
    麻烦贴出下 $encrypted 的值 
      

  3.   

    $text = '1149395524';
    $key = '4255390370';
    $s = my_xor($text, $key);
    echo base64_encode($s), PHP_EOL;//因为含有不可见字符,所以需要做 base64 编码。你解码就还原了
    print_r(unpack('C*', $s)); //十进制内码//xor
    function my_xor($text,$key)
    {
        $i = 0;
        $encrypted = "";
        foreach (str_split($text) as $char) {
            $encrypted .= chr(ord($char) ^ ord($key{$i++ % strlen($key)}));
        }
        return $encrypted;
    }BQMBDAAABQYFBA==
    Array
    (
        [1] => 5
        [2] => 3
        [3] => 1
        [4] => 12
        [5] => 0
        [6] => 0
        [7] => 5
        [8] => 6
        [9] => 5
        [10] => 4
    )
      

  4.   

    谢谢哥们的耐心解答。我找到原因了。是我自己多此一举,直接用byte[ ] 加密就好。转String后反而不对了。