DevToys Web Pro iconDevToys Web Proบล็อก
ให้คะแนนเรา:
ลองใช้ส่วนขยายเบราว์เซอร์:

ตัวถอดรหัส / ตัวเข้ารหัส Protobuf

ถอดรหัสแล้ว
รูปแบบ:

protobuf ที่เข้ารหัส Base64

  • ฟิลด์ที่ถอดรหัสแล้ว (2)

  • ฟิลด์ #ประเภท Wireค่า
    1Varint(0)150
    2Length-delimited(2)testing
    รายละเอียดทางเทคนิค

    ตัวถอดรหัส Protobuf ทำงานอย่างไร

    เครื่องมือนี้ทำอะไร

    ตัวถอดรหัส Protobuf แยกวิเคราะห์ข้อมูลไบนารีดิบของ Protocol Buffer โดยไม่ต้องใช้ไฟล์สคีมา .proto และแสดงหมายเลขฟิลด์ ประเภท และค่าตาม wire format นอกจากนี้ยังรองรับการเข้ารหัส JSON กลับเป็นไบนารี protobuf เมื่อคุณให้คำจำกัดความ .proto ทำให้สามารถตรวจสอบเพย์โหลด protobuf ที่ไม่โปร่งใสซึ่งถูกจับจากทราฟฟิกเครือข่ายหรือเก็บในฐานข้อมูลได้ โดยไม่ต้องเข้าถึงสคีมาต้นฉบับ

    กรณีการใช้งานทั่วไปของนักพัฒนา

    นักพัฒนาแบ็กเอนด์ใช้การถอดรหัส protobuf แบบไม่มีสคีมาเพื่อรีเวิร์สเอนจิเนียร์ gRPC API ที่ไม่มีเอกสาร ดีบักข้อความที่ถูกซีเรียลไลซ์ใน Kafka topics หรือดูเพย์โหลดไบนารีในคอลัมน์ฐานข้อมูล นักวิจัยด้านความปลอดภัยวิเคราะห์ทราฟฟิกเครือข่ายที่เข้ารหัสด้วย protobuf ระหว่างการทดสอบเจาะระบบ โหมดเข้ารหัสช่วยให้นักพัฒนายืนยันได้ว่าคำจำกัดความ .proto ของตนสร้างเอาต์พุตไบนารีตามที่คาดไว้ก่อนนำการเปลี่ยนแปลงสคีมาไปใช้กับบริการโปรดักชัน

    รูปแบบข้อมูล ชนิด หรือรูปแบบย่อย

    Protocol Buffers ใช้ wire format แบบกะทัดรัดที่มี wire type ห้าประเภท: varint (int32, int64, bool, enum), fixed 64-bit (double, fixed64), แบบกำหนดความยาว (string, bytes, embedded messages, packed repeated fields), fixed 32-bit (float, fixed32) และประเภท group แบบ start/end ที่เลิกใช้แล้ว หากไม่มีสคีมา ตัวถอดรหัสไม่สามารถแยกได้ว่าเป็นสตริงหรือ embedded message (ทั้งคู่เป็นแบบกำหนดความยาว) ดังนั้นจึงลองตีความทั้งสองแบบและแสดงผลการพาร์สที่น่าจะเป็นไปได้มากที่สุด

    ข้อผิดพลาดที่พบบ่อยและกรณีขอบ

    การถอดรหัสแบบไม่มีสคีมา (schema-less) มีความกำกวมโดยธรรมชาติ — varint อาจเป็น int32 แบบ signed (zigzag), uint32 แบบ unsigned หรือ boolean และฟิลด์แบบ length-delimited อาจเป็นสตริง, ไบต์ หรือข้อความที่ซ้อนอยู่ (nested messages) ชื่อฟิลด์จะหายไปในการเข้ารหัสแบบไบนารีและจะแสดงเป็นเพียงแท็กฟิลด์ตัวเลขเท่านั้น ฟิลด์ซ้ำแบบ packed จะดูเหมือนกับฟิลด์ไบต์เดี่ยวหนึ่งฟิลด์โดยไม่มีบริบทของสคีมา ควรอ้างอิงผลลัพธ์ที่ถอดรหัสแล้วกับเอกสารที่มีอยู่เสมอเพื่อคลี่คลายความกำกวม

    เมื่อใดควรใช้เครื่องมือนี้แทนการเขียนโค้ด

    ใช้เครื่องมือบนเบราว์เซอร์นี้เพื่อการตรวจดูอย่างรวดเร็วของเพย์โหลด protobuf ที่จับมาได้ เมื่อคุณไม่มีไฟล์ .proto หรืออยากตรวจสอบการเข้ารหัสโดยไม่ต้องตั้งค่า toolchain สำหรับการบิลด์ สำหรับระบบที่ใช้งานจริง ให้ใช้ protoc พร้อมไฟล์สคีมาที่ถูกต้อง โค้ดที่สร้างขึ้นตามภาษา และบริการ gRPC reflection ที่ให้ความปลอดภัยด้านชนิดข้อมูล (type safety) อย่างครบถ้วน ความเข้ากันได้แบบไปข้างหน้า (forward compatibility) และการผสานรวมกับระบบบิลด์ของแอปพลิเคชันของคุณ