我该如何解码呢!它不是base64

时间:2010-06-02 07:20:37

标签: php decode

这就是我所知道的......

解码时“GxvS117MfVw =”变为“56699”

现在这个“+ sB6hF46GyU =”会变成“?????”

“不包括

我试过base64解码器,但似乎不对。它应该是一个数字。我不确定长度,我不认为它应该超过5个数字。如果你能为我解码它并向我展示如何,我将非常感激。谢谢!!

修改

我知道这可能是数据不足,因为这是我的第一篇文章。嗯,我认为这是PHP,它编码像这样

pubcredentials.php?ID = GxvS117MfVw =

请提供您需要的信息,我会尽可能多地尝试获取

修改1:

我得到另一个“L0sgBFUTpsE =”变成“53096”

“不包括

我被问到为什么“L0sgBFUTpsE =”变成“53096”只是为了让你知道我没有解码这个。当我能够在更改解码方法之前对其进行解码时,此信息可供我使用。所以这些都是正确的!

2 个答案:

答案 0 :(得分:3)

如果数据代表Base-64编码材料,则字符串中编码的字节为:

$ b64 -d "+sB6hF46GyU=" 
Base64:
0x0000: +sB6hF46GyU=
Binary:
0x0000: FA C0 7A 84 5E 3A 1B 25 00                        ..z.^:.%.
$

作为参考,同一程序将另一组解码为:

$ b64 -d "GxvS117MfVw="
Base64:
0x0000: GxvS117MfVw=
Binary:
0x0000: 1B 1B D2 D7 5E CC 7D 5C 00                        ....^.}\.
$

因此,我不确定你是如何提出你声称在问题中意味着的答案56699。

我需要使用Base-64的东西,然后编写程序以满足我当时的特殊需求。

有关Base 64的详细信息,请参阅RFC3548

每组4个Base-64编码字符代表1-3个字节的二进制(未编码)数据。 你给出的字符串都是12个字节长,代表7-9个字节的二进制数据。字符串实际上只编码8个字节;最后的'='表示不存在第9个字节。

来自RFC:

               Table 1: The Base 64 Alphabet

  Value Encoding  Value Encoding  Value Encoding  Value Encoding
      0 A            17 R            34 i            51 z
      1 B            18 S            35 j            52 0
      2 C            19 T            36 k            53 1
      3 D            20 U            37 l            54 2
      4 E            21 V            38 m            55 3
      5 F            22 W            39 n            56 4
      6 G            23 X            40 o            57 5
      7 H            24 Y            41 p            58 6
      8 I            25 Z            42 q            59 7
      9 J            26 a            43 r            60 8
     10 K            27 b            44 s            61 9
     11 L            28 c            45 t            62 +
     12 M            29 d            46 u            63 /
     13 N            30 e            47 v
     14 O            31 f            48 w         (pad) =
     15 P            32 g            49 x
     16 Q            33 h            50 y

所以,'GxvS'是:

6        49       47       18
000110   110001   101111   010010

优化组合:

000110.11  0001.1011   11.010010

解释为十六进制:

0x1B  0x1B  0xD2

这是我的程序给出的前三个字节。

如果我不得不猜测,你有一个8字节的“整数”编码在Base-64而不是decimal。而且它不是直接映射到56699;它是某种与ID 56699相关联的会话标识符。

答案 1 :(得分:1)

即使字符串看起来如果有base64-encoded - 基于上面示例中给出的字符集和字符串末尾的独特=字符 - 转换{ {1}}可能包含几个步骤,包括压缩和/或加密算法,其中56699 --> GxvS117MfVw= - 编码作为最后一步。

正如VeeBee所说:如果没有任何进一步的信息,就无法确定返回base64所需的步骤。