ASCII, Unicode, dan Representasi Teks
Pahami cara teks menjadi byte dan alasan pengodean karakter penting dalam konteks kriptografi.
ASCII, Unicode, dan Representasi Teks adalah pelajaran Cryptology Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Cryptology Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Cryptology Academy mencakup 4 pelajaran total.
ASCII sebagai Pengodean 7 Bit
ASCII (American Standard Code for Information Interchange), yang distandardisasi pada tahun 1963, mengodekan 128 karakter dalam 7 bit (nilai 0-127). ASCII mencakup alfabet Inggris (huruf besar dan kecil), angka, tanda baca, serta karakter kontrol.
ASCII dirancang untuk bahasa Inggris dan peralatan telekomunikasi Amerika. ASCII bekerja dengan baik untuk tujuan yang dimaksudkan, tetapi pada dasarnya tidak memadai untuk bahasa apa pun selain bahasa Inggris.
Karakter Kontrol dalam ASCII
32 karakter ASCII pertama (0-31) ditambah DEL (127) merupakan karakter kontrol. Karakter-karakter tersebut awalnya dirancang untuk mengendalikan mesin Teletype: LF (line feed, 10), CR (carriage return, 13), BEL (bell, 7), TAB (9), ESC (27).
Dalam konteks kriptografi, karakter kontrol dapat menimbulkan masalah. Byte null (0x00) mengakhiri string C lebih awal, sedangkan karakter DEL atau ESC mungkin ditafsirkan oleh emulator terminal.
ASCII Diperluas dan Masalahnya
Berbagai negara membuat perluasan ASCII mereka sendiri menggunakan bit ke-8 (nilai 128-255), sehingga tercipta ratusan pengodean yang tidak kompatibel: ISO-8859-1 (Latin-1) untuk Eropa Barat, KOI-8R untuk bahasa Rusia, dan Big5 untuk bahasa Tionghoa.
Dokumen yang disimpan dalam satu pengodean akan tampak sebagai teks kacau ketika dibuka dengan pengodean lain. Ketiadaan standar universal menjadikan pengembangan perangkat lunak internasional sebagai tantangan besar sepanjang tahun 1980-an dan 1990-an.
Unicode sebagai Kumpulan Karakter Universal
Unicode dibuat untuk menyediakan satu kumpulan karakter universal yang mencakup semua sistem tulisan manusia. Saat ini Unicode mendefinisikan lebih dari 149.000 karakter yang mencakup 161 aksara, termasuk aksara dan simbol historis.
Unicode memisahkan identitas karakter (titik kode, seperti U+0041 untuk "A") dari pengodean (cara titik kode tersebut disimpan dalam byte). Pemisahan ini memungkinkan berbagai format pengodean merepresentasikan karakter yang sama.
Pengodean UTF-8 dengan Panjang Variabel
UTF-8 mengodekan titik kode Unicode menggunakan 1 hingga 4 byte. Karakter ASCII (U+0000 hingga U+007F) menggunakan tepat 1 byte, sama dengan nilai ASCII-nya, sehingga UTF-8 kompatibel dengan ASCII.
Karakter dari U+0080 hingga U+07FF menggunakan 2 byte. U+0800 hingga U+FFFF menggunakan 3 byte (mencakup sebagian besar aksara umum, termasuk aksara Tionghoa, Jepang, dan Korea). U+10000 dan seterusnya menggunakan 4 byte.
UTF-16 dan UTF-32
UTF-16 menggunakan 2 byte untuk karakter yang paling umum (Basic Multilingual Plane, U+0000 hingga U+FFFF) dan 4 byte (pasangan surrogate) untuk karakter di luar U+FFFF. UTF-16 digunakan secara internal oleh Windows dan Java.
UTF-32 menggunakan tepat 4 byte per titik kode, sehingga lebarnya tetap dan pengindeksan berdasarkan posisi karakter menjadi mudah, tetapi boros untuk teks yang sebagian besar berupa ASCII. UTF-32 digunakan dalam beberapa representasi internal untuk akses acak yang cepat.
Byte Order Mark (BOM)
Byte Order Mark (BOM) adalah karakter Unicode U+FEFF yang ditempatkan di awal berkas untuk menunjukkan urutan byte dan pengodean. Dalam UTF-16, BOM membedakan big-endian (FE FF) dari little-endian (FF FE).
Dalam UTF-8, BOM (EF BB BF) tidak diperlukan karena UTF-8 tidak memiliki masalah urutan byte, tetapi beberapa perangkat lunak Windows tetap menambahkannya. Hal ini menimbulkan masalah dalam aplikasi kriptografi karena BOM diperlakukan sebagai data, bukan penanda.
Mengapa Pengodean Penting dalam Kriptografi
Fungsi hash kriptografis dan MAC beroperasi pada rangkaian byte, bukan karakter abstrak. String yang sama, "café", dikodekan secara berbeda dalam UTF-8 (4 byte: 63 61 66 C3 A9) dan Latin-1 (4 byte: 63 61 66 E9).
Jika dua sistem melakukan hash pada string yang sama tetapi menggunakan pengodean yang berbeda, keduanya akan menghasilkan hash yang berbeda dan autentikasi akan gagal. Protokol kripto harus menentukan pengodean secara eksplisit untuk memastikan interoperabilitas.
Emoji dalam UTF-8
Emoji adalah karakter Unicode dalam Supplementary Multilingual Plane. Emoji "Grinning Face" (U+1F600) dikodekan menjadi 4 byte dalam UTF-8: F0 9F 98 80.
Dalam konteks keamanan, emoji dan karakter Unicode berdimensi penuh telah digunakan dalam serangan homograf, ketika URL seperti "xn--pple-43d.com" (yang tampak seperti "apple.com") menipu pengguna agar mengunjungi situs berbahaya.
Normalisasi Unicode dan Kriptografi
Beberapa karakter dapat direpresentasikan dalam berbagai bentuk Unicode. "e dengan aksen akut" dapat berupa U+00E9 (prakomposisi) atau U+0065 U+0301 (e diikuti aksen gabungan, dekomposisi). Keduanya tampak identik, tetapi memiliki representasi byte yang berbeda.
Sistem kriptografi yang tidak menormalisasi Unicode sebelum melakukan hash dapat menghasilkan hash yang berbeda untuk string yang tampak identik. Normalisasi NFKC umumnya disarankan sebelum menerapkan operasi kriptografi pada teks.
Memilih Pengodean yang Tepat untuk Kripto
Saat menerapkan sistem kriptografi, pilihan pengodean merupakan keputusan penting yang harus didokumentasikan. Kata sandi harus dikodekan sebagai UTF-8 sebelum dilakukan hashing. Ruas protokol harus menentukan pengodean dalam dokumen spesifikasinya.
Kegagalan interoperabilitas yang disebabkan oleh ketidakcocokan pengodean merupakan sumber bug yang umum dalam sistem kriptografi. Dua implementasi dari protokol yang sama dapat menghasilkan hasil autentikasi yang berbeda jika keduanya mengodekan string dengan cara yang berbeda.
Kuis Pengodean UTF-8
Uji pemahaman Anda tentang pengodean UTF-8.
Inti Pembelajaran: Pengodean Teks
ASCII mencakup 128 karakter dalam 7 bit. Unicode menyediakan ruang titik kode universal untuk semua aksara manusia. UTF-8 mengodekan Unicode dalam 1-4 byte, dengan ASCII sebagai subset 1 byte.
Dalam kriptografi, pengodean penting karena fungsi hash beroperasi pada byte. Teks yang sama dalam pengodean berbeda menghasilkan hash yang berbeda. Normalisasi Unicode sangat penting sebelum melakukan operasi kriptografi pada teks.
Belajar Cryptology Academy dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 67
- Pelajaran
- 261
Pertanyaan yang Sering Diajukan
Apakah pelajaran “ASCII, Unicode, dan Representasi Teks” gratis?
Ya — teks lengkap “ASCII, Unicode, dan Representasi Teks” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Cryptology Academy, upgrade ke CoddyKit PRO. Kursus Cryptology Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “ASCII, Unicode, dan Representasi Teks”?
Pahami cara teks menjadi byte dan alasan pengodean karakter penting dalam konteks kriptografi. Kamu berlatih Cryptology Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Cryptology Academy?
Tidak diperlukan pengalaman sebelumnya. Cryptology Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “ASCII, Unicode, dan Representasi Teks” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Cryptology Academy ini?
Ya. Setiap pelajaran Cryptology Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Pengodean Base64: Cara Kerjanya
- ASCII, Unicode, dan Representasi Teks
- Heksadesimal dalam Keluaran Kriptografis
- Pengodean vs Enkripsi vs Pencincangan