node.js base64 การเข้ารหัสสตริงให้ผลลัพธ์ที่แตกต่างกันเล็กน้อย (local vs heroku)


0

ฉันได้ทำการค้นหาบางอย่างแล้วและรวบรวมว่าปัญหาอาจลงไปเป็นตัวละครขึ้นบรรทัดใหม่ที่กำลังจัดการกับท้องถิ่นใน vs heroku ที่แตกต่างกัน แต่ฉันไม่แน่ใจว่าจะจัดการกับมันได้อย่างไร

ฉันมีแอพพื้นฐานสวยที่ต้องเข้ารหัส base64 สตริง

รหัสเป็นรหัสโหนดพื้นฐานสวย

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

นี่คือผลลัพธ์พวกมันคล้ายกันแตกต่างกันโดยเฉพาะ "YQ =="

Local
    MzQ0YzAxOWMtMWZhMC00ODU0LTlhMjMtOWNiNmYzYTdmMzNkOjlhZThhMWUwLTg2OWItNDg2Yi1iNzFkLWRkMGM1NGQ3NWFhYQ==

Heroku
    MzQ0YzAxOWMtMWZhMC00ODU0LTlhMjMtOWNiNmYzYTdmMzNkOjlhZThhMWUwLTg2OWItNDg2Yi1iNzFkLWRkMGM1NGQ3NWFh

มีใครรู้บ้างว่าเกิดอะไรขึ้นที่นี่

คำตอบ:


1

ดีถอดรหัสพวกเขาและดู

$ echo 'MzQ0YzAxOWMtMWZhMC00ODU0LTlhMjMtOWNiNmYzYTdmMzNkOjlhZThhMHUWLTg2OWItNDg2Yi1iNzFkLWRkMGM1NGGQN = 3Y | 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 'MzQ0YzAxOWMtMWZhMC00ODU0LTlhMjMtOWNiNmYzYTdmMzNkOjlhZThhMWUWLTg2OWItNDg2Yi1iNzFkLWRkMGM1NGG3NF | 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

โปรดสังเกตว่า Heroku กำลังเข้ารหัสบัฟเฟอร์ที่มีขนาดสั้นกว่าหนึ่งไบต์ (ไม่มีตัวอักษรสุดท้ายa) - หรือตัวเข้ารหัส Base64 นั้นมีข้อผิดพลาดและทิ้งชิ้นส่วนที่ไม่สมบูรณ์แทนที่จะใช้ช่องว่างภายในอย่างถูกต้อง

(เป็นช็อตคัตเนื่องจากเอาต์พุต Base64 ประกอบด้วยชิ้น 4 อักขระเสมอคุณสามารถถอดรหัสได้YQ==ด้วยตัวของมันเองแน่นอนจะถอดรหัสเป็นตัวอักษรa)


อาคัดลอกและแปะข้อผิดพลาดนั้นแย่ที่สุด ... ฉันคิดว่าฉันถอดรหัสพวกเขาจริง ๆ แล้วฉันจะได้เห็นสิ่งนั้น ขอบคุณที่ชี้ให้เห็นว่า
Jeremy Ragsdale
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.