node.js base64-Codierung einer Zeichenfolge führt zu leicht unterschiedlichen Ergebnissen (local vs heroku)

410
Jeremy Ragsdale

Ich habe ein wenig gesucht, und ich versichere, dass das Problem möglicherweise auf eine neue Linie zurückzuführen ist, die lokal anders als auf Heroku behandelt wird, aber ich bin nicht sicher, wo oder wie ich damit umgehen soll.

Ich habe eine ziemlich grundlegende App, die eine Zeichenfolge base64 kodieren muss.

Der Code ist ziemlich grundlegender Knotencode

let buff = new Buffer(cics);  let base64data = buff.toString('base64'); 

Hier sind die Ergebnisse, sie sind ähnlich und unterscheiden sich nur durch "YQ ==".

Local MzQ0YzAxOWMtMWZhMC00ODU0LTlhMjMtOWNiNmYzYTdmMzNkOjlhZThhMWUwLTg2OWItNDg2Yi1iNzFkLWRkMGM1NGQ3NWFhYQ==  Heroku MzQ0YzAxOWMtMWZhMC00ODU0LTlhMjMtOWNiNmYzYTdmMzNkOjlhZThhMWUwLTg2OWItNDg2Yi1iNzFkLWRkMGM1NGQ3NWFh 

Weiß jemand, was hier los sein könnte?

0

1 Antwort auf die Frage

1
grawity

Nun, entschlüssle sie und schau nach.

$ Echo 'MzQ0YzAxOWMtMWZhMC00ODU0LTlhMjMtOWNiNmYzYTdmMzNkOjlhZThhMWUwLTg2OWItNDg2Yi1iNzFkLWRkMGM1NGQ3NWFhYQ ==' | base64 -d | Hexdump -C 00000000 33 34 34 63 30 31 39 63 2d 31 66 61 30 2d 34 38 | 344c019c-1fa0-48 | 00000010 35 34 2d 39 61 32 33 2d 39 63 62 36 66 33 61 37 | 54-9a23-9cb6f3a7 | 00000020 66 33 33 64 3a 39 61 65 38 61 31 65 30 2d 38 36 | f33d: 9ae8a1e0-86 | 00000030 39 62 2d 34 38 36 62 2d 62 37 31 64 2d 64 64 30 | 9b-486b-b71d-dd0 | 00000040 63 35 34 64 37 35 61 61 61 | c54d75aa a | 00000049 
$ echo 'MzQ0YzAxOWMtMWZhMC00ODU0LTlhMjMtOWNiNmYzYTdmMzNkOjlhZThhMWUwLTg2OWItNG2Yi1iZiZzMMNGQ3NWH' | base64 -d | Hexdump -C 00000000 33 34 34 63 30 31 39 63 2d 31 66 61 30 2d 34 38 | 344c019c-1fa0-48 | 00000010 35 34 2d 39 61 32 33 2d 39 63 62 36 66 33 61 37 | 54-9a23-9cb6f3a7 | 00000020 66 33 33 64 3a 39 61 65 38 61 31 65 30 2d 38 36 | f33d: 9ae8a1e0-86 | 00000030 39 62 2d 34 38 36 62 2d 62 37 31 64 2d 64 64 30 | 9b-486b-b71d-dd0 | 00000040 63 35 34 64 37 35 61 61 | c54d75aa | 00000048 

Beachten Sie, dass Heroku einen Puffer codiert, der um ein Byte kürzer ist (der letzte Buchstabe fehlt a) - oder der Base64-Encoder ist fehlerhaft und verwirft unvollständige Blöcke, anstatt korrekt aufgefüllt zu werden.

(Als Abkürzung können Sie, da die Base64-Ausgabe immer aus 4-stelligen Chunks besteht, nur die YQ==einzelnen dekodieren. Sie dekodiert tatsächlich den Buchstaben a.)

Ah Fehler beim Kopieren und Einfügen sind die schlimmsten ... Ich hätte sie wirklich entschlüsselt, hätte ich das gesehen. Danke, darauf hinzuweisen. Jeremy Ragsdale vor 5 Jahren 0