UltKit
รูปภาพ11
PDF13
เอกสารและข้อมูล7
วิดีโอ6
เสียง4
เครื่องมืออื่น ๆ22

แปลง JSON เป็น Base64

แปลงไฟล์ JSON ให้เป็นข้อความ Base64 บรรทัดเดียว ใช้ได้ในตัวแปรสภาพแวดล้อม ฟิลด์ YAML และเนื้อหา API ซึ่งเครื่องหมายคำพูด วงเล็บปีกกา และการขึ้นบรรทัดใหม่มักก่อปัญหา เมื่อถอดรหัสกลับจะได้ไบต์เดิมทุกไบต์

แปลงไฟล์ข้อมูล

หรือลากไฟล์ CSV, TSV, TXT … มาวางที่นี่ ·

สูงสุด 95 MB ต่อไฟล์· ได้สูงสุด 20 ไฟล์· ลบหลังจาก 30 นาที

ผลลัพธ์

ไฟล์จะถูกประมวลผลบนเซิร์ฟเวอร์ของเราและถูกลบหลังจาก 30 นาที

วิธีใช้เครื่องมือนี้

  1. 1

    อัปโหลดไฟล์ JSON

    เพิ่มไฟล์ .json, .jsonl หรือ .ndjson เช่น คีย์ service account หรือไฟล์คอนฟิก อัปโหลดได้สูงสุด 20 ไฟล์ต่อครั้ง ไฟล์ละไม่เกิน 95 MB

  2. 2

    เลือกว่าจะใส่คำนำหน้าหรือไม่

    ค่าเริ่มต้นคือ Base64 แบบธรรมดา เปิด คำนำหน้า Data URI ใน การตั้งค่าขั้นสูง เฉพาะเมื่อจะนำข้อความไปใส่ในแอตทริบิวต์ HTML หรือ CSS ที่ต้องใช้ URL แบบ data:

  3. 3

    เข้ารหัสแล้วคัดลอก

    กด แปลงเป็น Base64 text ดาวน์โหลดผลลัพธ์ แล้ววางสตริงลงในที่เก็บ secret, manifest หรือ request body ของคุณ

การเข้ารหัส JSON เป็น Base64 ไม่ได้เปลี่ยนข้อมูล แต่จัดรูปใหม่เป็นตัวอักษรและตัวเลขธรรมดา เพื่อให้ส่งผ่านจุดที่อาจทำให้วงเล็บปีกกา เครื่องหมายอัญประกาศ และการขึ้นบรรทัดใหม่เสียหายได้

ทำไมต้องเข้ารหัสไฟล์ JSON เป็น Base64

กรณีที่พบบ่อยคือไฟล์ข้อมูลรับรอง ผู้ให้บริการคลาวด์ส่งคีย์ service account มาเป็นไฟล์ JSON แต่ระบบ CI แดชบอร์ดโฮสติ้ง หรือแพลตฟอร์มคอนเทนเนอร์ของคุณมีเพียงช่องข้อความบรรทัดเดียวสำหรับ secret หากวาง JSON ดิบลงไป จะพังตั้งแต่การขึ้นบรรทัดใหม่แรกหรืออัญประกาศตัวแรกที่ไม่ได้ escape เมื่อเข้ารหัสเป็น Base64 คีย์เดียวกันจะเป็นสตริงต่อเนื่องสายเดียว ที่แอปพลิเคชันถอดรหัสเองตอนเริ่มทำงาน

Base64 มีที่มาจากอีเมล MIME ซึ่งกำหนดไว้ใน RFC 2045 เมื่อปี 1996 ใช้ Base64 เพื่อให้ไฟล์แนบผ่านเมลเซิร์ฟเวอร์ที่รองรับเฉพาะข้อความ 7 บิตได้ ต่อมามีการกำหนดชุดอักขระนี้เป็นมาตรฐานแยกใน RFC 4648 เมื่อปี 2006 ข้อเสียคือขนาดไฟล์ เพราะทุก 3 ไบต์กลายเป็น 4 อักขระ สำหรับรูปภาพและไฟล์ไบนารีอื่น แปลงรูปเป็น Base64 เข้ารหัสแบบเดียวกันพร้อม data URI ที่ตรงกัน หากเครื่องมือปลายทางอ่าน YAML แทนฟิลด์ Base64 อาจใช้ JSON เป็น YAML ก็เพียงพอ

ตัวอย่างการแปลง JSON เป็น Base64

JSON แบบกะทัดรัด {"env":"prod","retries":3} และ Base64 ที่เข้ารหัสแล้ว
{"env":"prod","retries":3}

eyJlbnYiOiJwcm9kIiwicmV0cmllcyI6M30=

ที่ที่ต้องใช้ JSON แบบเข้ารหัส Base64

ระบบที่รับ JSON ในรูปแบบ Base64 เท่านั้น
หน่วยงานข้อกำหนดแหล่งที่มา
Kubernetes Secretsทุกค่าใต้ data ต้องเป็น Base64 หากจะเมาต์ไฟล์คีย์ JSON ต้องเข้ารหัสก่อนkubernetes.io
GitHub REST APIเอนด์พอยต์สร้างหรืออัปเดตเนื้อหาไฟล์ต้องการไฟล์ รวมถึงไฟล์ .json เป็น Base64 ใน contentdocs.github.com
JSON Web Tokens (RFC 7519)header และ claims แบบ JSON เข้ารหัสด้วย base64url แยกกัน แล้วต่อกันด้วยจุด—
ไฟล์แนบอีเมล (MIME)ไฟล์แนบ .json ส่งด้วยการเข้ารหัสแบบ Base64 เพื่อให้ผ่านเมลเซิร์ฟเวอร์ที่รองรับเฉพาะข้อความได้—
Base64การเข้ารหัส Base 64 · การเข้ารหัสตาม RFC 4648
วิธีเขียนไบต์ใด ๆ ด้วยอักขระปลอดภัย 64 ตัว ได้แก่ A–Z, a–z, 0–9, + และ / โดยใช้ = เป็นตัวเติมท้าย ทุก 3 ไบต์ที่นำเข้าจะกลายเป็น 4 อักขระ ข้อความจึงยาวกว่าไฟล์ประมาณหนึ่งในสาม แปลงกลับได้และไม่มีคีย์ จึงเป็นเพียงรูปแบบสำหรับการส่งข้อมูล ไม่ใช่มาตรการรักษาความปลอดภัย

ข้อมูลฟอร์แมต JSON และ Base64

JSON

JavaScript Object Notation

JSON คือรูปแบบข้อความขนาดเบาสำหรับข้อมูลเชิงโครงสร้าง ได้รับความนิยมจาก Douglas Crockford ในช่วงต้นทศวรรษ 2000 และกำหนดเป็นมาตรฐาน RFC 8259 และ ECMA-404 แสดงอ็อบเจกต์ อาร์เรย์ สตริง ตัวเลข ค่าบูลีน และ null ด้วยไวยากรณ์ที่เรียบง่ายและอ่านง่าย เป็นรูปแบบเริ่มต้นของ API บนเว็บ ไฟล์การตั้งค่า และการแลกเปลี่ยนข้อมูลระหว่างแอปในแทบทุกภาษาโปรแกรม ไม่มีคอมเมนต์ วันที่ หรือสคีมาในตัว และไฟล์ขนาดใหญ่ที่ซ้อนกันหลายชั้นอ่านได้ยากหากไม่มีโปรแกรมดู

การบีบอัด
–
พื้นหลังโปร่งใส
–
ภาพเคลื่อนไหว
–
เปิดตัว
2001 · Douglas Crockford
ตัวแปลงไฟล์ JSON

BASE64

ข้อความเข้ารหัส Base64

Base64 คือการเข้ารหัสตามข้อกำหนด RFC 4648 ที่แปลงข้อมูลไบนารีใด ๆ ให้เป็นสตริงจากอักขระข้อความที่ปลอดภัย 64 ตัว ใช้ฝังรูปภาพใน HTML และ CSS ในรูปแบบ data URI แนบไฟล์ในอีเมล และส่งข้อมูลไบนารีใน JSON หรือ XML การเข้ารหัสย้อนกลับได้ทั้งหมดแต่ทำให้ข้อมูลใหญ่ขึ้นประมาณ 33% Base64 ไม่ใช่การเข้ารหัสลับและไม่มีความปลอดภัยใด ๆ ใครก็ถอดรหัสได้

การบีบอัด
แบบไม่สูญเสียข้อมูล
พื้นหลังโปร่งใส
–
ภาพเคลื่อนไหว
–
เปิดตัว
–
ตัวแปลงไฟล์ BASE64

ระบบเข้ารหัส JSON เป็น Base64 เมื่อต้องส่งข้อมูลที่มีโครงสร้างไปในฟิลด์สตริงเดียวที่รับเครื่องหมายอัญประกาศและการขึ้นบรรทัดใหม่แบบดิบไม่ได้ เช่น secret ของ CI, Kubernetes manifest, ฟิลด์ content ของ API หรือค่าใน header

คำถามเกี่ยวกับการแปลง JSON เป็น Base64

JSON ที่เข้ารหัส Base64 ถือว่าถูกเข้ารหัสลับหรือไม่

ไม่ใช่ Base64 เป็นเพียงการเข้ารหัสแบบหนึ่ง ใครก็ถอดรหัสได้ด้วยคำสั่งเดียว เอกสารของ Kubernetes เองก็เตือนว่า Secret ถูกเข้ารหัสด้วย Base64 และเก็บแบบไม่เข้ารหัสโดยค่าเริ่มต้น ดังนั้นควรปกป้องสตริงที่เข้ารหัสแล้วเช่นเดียวกับคีย์ต้นฉบับ

โทเค็นหรือ URL ต้องใช้ Base64 หรือ base64url

Base64 มาตรฐานตามที่ใช้ที่นี่ใช้ + และ / และเติม = เป็นตัวเติมท้าย ส่วน JWT และพารามิเตอร์ใน URL ใช้ชุดอักขระ base64url ตาม RFC 4648 ซึ่งใช้ - และ _ แทน และมักตัดตัวเติมท้ายออก หากปลายทางต้องการ base64url ให้แทนที่อักขระทั้งสามตัวนี้

ควรย่อ JSON (minify) ก่อนเข้ารหัสหรือไม่

โดยทั่วไปได้ ช่องว่าง การเยื้อง และการขึ้นบรรทัดใหม่ก็เป็นไบต์เหมือนข้อมูลอื่น และทุก 3 ไบต์จะกลายเป็น 4 อักขระ การบีบ JSON ที่จัดรูปแบบไว้ให้กะทัดรัดก่อน เช่น ใช้ jq -c จะทำให้สตริงที่เข้ารหัสสั้นลงตามไปด้วย

ถอดรหัสสตริงกลับเป็น JSON อย่างไร

บน macOS หรือ Linux ใช้ base64 --decode ใน PowerShell ใช้ [Convert]::FromBase64String และในเบราว์เซอร์ให้ส่งผลลัพธ์ของ atob ผ่าน TextDecoder เพื่อให้อักขระ UTF-8 กลับมาถูกต้อง

ทำไม kubectl จึงแจ้งว่า illegal base64 data

ค่าใต้ data ใน Secret manifest ต้องเป็น Base64 ที่ถูกต้องในบรรทัดเดียว ข้อผิดพลาดนี้มักเกิดจากมีการขึ้นบรรทัดใหม่หลุดเข้ามาตอนวาง หรือใส่ JSON ธรรมดาไว้ใต้ data ค่าธรรมดาควรอยู่ใต้ stringData ซึ่ง Kubernetes จะเข้ารหัสให้เอง

การเข้ารหัสเปลี่ยนแปลงข้อมูลใน JSON หรือไม่

ไม่ Base64 แปลงไบต์เป็นข้อความและแปลงกลับได้โดยไม่สูญเสียข้อมูล คีย์ ค่า อักขระที่มีเครื่องหมายวรรณยุกต์ หรือแม้แต่ byte order mark ที่ต้นไฟล์ จะกลับมาเหมือนเดิมทุกประการเมื่อถอดรหัส