86@86@80@8A@80@85@83@8B@                   @分割符,86表示4,80表示10BEA@04A2@78A8@66CF@0AA8@78D9@             @分隔符,0BEA貌似是“广”字,04A2貌似是“东”字78A8可能是 “省”字。以为上述的是广东的身份证号码。哪位大侠,对16进制,移位,交叉啥的熟悉的,帮我把解密算法弄出来。谢谢

解决方案 »

  1.   

    s = new string("86@86@80@8A@80@85@83@8B@".Split('@').Select(x => (char)x.ToInt32("0x" + x)).ToArray();
      

  2.   

    0BEA ^ B209 = B9E3 广
    04A2 ^ B209 = B6AB 东
    78A8 ^ B209 = CAA1 省
      

  3.   

    "86@86@80@8A@80@85@83@8B@0BEA@04A2@78A8@66CF@0AA8@78D9@"
    "44282719广东省云浮市"借鉴楼上的回复,上面这串是用GB2312的编码。
    const string input = @"86@86@80@8A@80@85@83@8B@0BEA@04A2@78A8@66CF@0AA8@78D9@";
    var bytes = new List<byte>();foreach (var seg in input.Split('@').Where(s => !string.IsNullOrEmpty(s)))
    {
    switch (seg.Length)
    {
    case 4:
    var word = BitConverter.GetBytes((Int16) (Int16.Parse(seg, NumberStyles.HexNumber) ^ 0xB209));
    bytes.Add(word[1]);
    bytes.Add(word[0]);
    break; case 2:
    bytes.Add((byte) (byte.Parse(seg, NumberStyles.HexNumber) ^ 0xB2));
    break; default:
    break;
    }
    }var text = Encoding.GetEncoding("gb2312").GetString(bytes.ToArray());