【问题标题】:How do I decode this! It's not base64 [closed]我怎么解码这个!它不是base64 [关闭]
【发布时间】:2010-06-02 07:20:36
【问题描述】:

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

这个“GxvS117MfVw=”解码后变成“56699”

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

" 不包括

我尝试了 base64 解码器,但它似乎不正确。它应该是一个数字。我不确定长度,我认为它不应该超过 5 个数字。如果您能为我解码并告诉我如何解码,我将不胜感激。谢谢!!

编辑:

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

pubcredentials.php?id=GxvS117MfVw=

请提供您需要的信息,我会尽我所能得到它

编辑 1:

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

" 不包括

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

【问题讨论】:

  • 这也是一个错误的事情,这个“GxvS117MfVw=”解码后变成了“56699”。因此,请提供更多关于您的需求的信息
  • 它看起来像base64,你确定它没有加密和“base64:ed”吗?
  • 不,我 100% 确定这是对的。我再次检查......我没有解码这个。我已经有了。
  • 我的问题是,你为什么需要这个?如果您对 ID 有合法访问权,您就会知道它是如何生成的。在我看来,您正试图为其他人的网站提供一些价值……我不会提供帮助。
  • 括号 != 引号

标签: php decode


【解决方案1】:

如果数据代表 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

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

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

【讨论】:

  • 我承认困惑 - 为什么要对编码数据实际代表的解释投反对票?
  • 嗯,我只知道我曾经能够使用我提供的信息对其进行解码,但最近他们似乎改变了他们的方法,我猜我运气不好
【解决方案2】:

即使字符串看起来像 base64-encoded - 基于上面示例中给出的字符集和字符串末尾的独特 = 字符 - 转换 56699 --> GxvS117MfVw= 可能包括包括压缩和/或加密算法在内的几个步骤,最后一步是base64-encoding。

正如VeeBee 所说:如果没有任何进一步的信息,就不可能确定返回GxvS117MfVw= --> 56699 所需的步骤。

【讨论】:

  • 会很好地解释为什么一个答案被否决......但这需要对原始问题和发布的答案有所了解(对于那些投反对票乔纳森的人来说尤其如此Leffler 回答,因为它解释了给定原始问题可以解释的内容)。
  • +1 团结一致赞成 :)(我看不出有什么理由反对)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多