2016-12-21 39 views
1

base64の文字列ADEwNjcANDEzNDgxODdCNjcyNzIxMzU5NjU1M0VBM0JFOEE5QzM=は、106741348187B6727213596553EA3BE8A9C3です。 106741348187B6727213596553EA3BE8A9C3をbase64にエンコードすると、結果はMTA2NzQxMzQ4MTg3QjY3MjcyMTM1OTY1NTNFQTNCRThBOUMzになります。base64へのエンコード

エンコードされていない文字列が最初のbase64文字列の入力であることは確かです。なぜなら、エンコードされていない文字列はユーザ​​ーIDと認証トークンが結合されているからです。したがって、base64からのデコードでこれらの2つの特定の文字列が結合された場合、デコードされた文字列とは異なるコード化結果が返されます。

答えて

1

入力をデコードした結果が106741348187B6727213596553EA3BE8A9C3ではないという問題があります。それは\01067\041348187B6727213596553EA3BE8A9C3です。 2つのヌルバイトに注意してください。おそらく、再エンコードする前に削除されています。

あなたがデコードし、それらのヌルを除去せずに再エンコードした場合、あなたが戻って入力を取得:

$ echo "ADEwNjcANDEzNDgxODdCNjcyNzIxMzU5NjU1M0VBM0JFOEE5QzM=" | base64 -d | base64 
ADEwNjcANDEzNDgxODdCNjcyNzIxMzU5NjU1M0VBM0JFOEE5QzM= 

は、より良い何が起こっているかを確認するには、あなたのデコーダによって出力された実際のバイトを見て

$ echo "ADEwNjcANDEzNDgxODdCNjcyNzIxMzU5NjU1M0VBM0JFOEE5QzM=" | base64 -d | od -c 
0000000 \0 1 0 6 7 \0 4 1 3 4 8 1 8 7 B 6 
0000020 7 2 7 2 1 3 5 9 6 5 5 3 E A 3 B 
0000040 E 8 A 9 C 3 
0000046 
+0

私はそれが必要ではないと思いますが、私はデコードの出力を見ません。そこに使用しているエンコーダは何ですか?私はPHPのbase64_encodeを使用しています。 PHPのような十分に確立された言語では、不適切なbase64エンコード関数が必要な理由はありますか? –

+0

これで出力が分かりました。私のデコード方法はヌルバイトを表示していませんでした。 –

+0

ありがとうございます。私はbashにその機能性があったことを認識していなかったので、これは私にとって有益なことです。 –

関連する問題