A breakdown of common computer science concepts that often overlap but have distinct purposes.
1. Parsing
Definition: Parsing is the process of analyzing a string of data (like text or code) to understand its structure and convert it into a more usable format, such as a data structure (e.g., parsing JSON into a JavaScript object).
Opposite: Stringification / Serialization
You serialize (or stringify) a structured object into a string and then parse it back.
πΉ 2. Serialization
Definition: The process of converting a data structure (like a Python dictionary or JavaScript object) into a format that can be stored or transmitted (e.g., JSON, XML, binary).
Opposite: Deserialization / Parsing
Deserialization turns the serialized string/data back into the original structure.
πΉ 3. Encoding
Definition: Conversion of data into a specific format using a known scheme so it can be safely stored or transmitted (e.g., UTF-8, Base64).
Opposite: Decoding
Decoding reverses the process using the same scheme (e.g., Base64 decoding).
β
Encoding is not encryption β itβs easily reversible and not meant for security.
πΉ 4. Hashing
Definition: Hashing transforms input data into a fixed-size string of characters (hash). Itβs one-way β designed to be irreversible (e.g., SHA-256 for passwords).
Opposite: β None (by design)
Hashing is irreversible. You canβt get the original input from the hash.
πΉ 5. Encryption
Definition: Converts data into a scrambled (ciphertext) format using an algorithm and key, meant to be reversible for authorized parties.
Opposite: Decryption
With the correct key, encrypted data can be decrypted back to the original.
πΉ 6. Signing (Digital Signing)
Definition: Produces a cryptographic signature of data using a private key to ensure integrity and authenticity (e.g., in JWT, emails).
Opposite: Verification
The receiver uses the public key to verify the dataβs authenticity and integrity.
πΉ 7. Salting
Definition: Adds random data (a "salt") to inputs (often passwords) before hashing to defend against precomputed attacks (rainbow tables).
Opposite: β None exactly
Thereβs no "reversing" salting β it just strengthens the hash. But during verification, you recompute the hash using the stored salt.
πΉ 8. Obfuscation
Definition: Makes code difficult to understand or reverse-engineer (e.g., renaming variables, flattening logic).
Opposite: Deobfuscation
This means trying to interpret or reconstruct the original logic of obfuscated code.
β οΈ Obfuscation is not security, just makes code harder to read.
πΉ 9. Minification
Definition: Removes all unnecessary characters (spaces, comments) from code without changing its functionality β for performance.
Opposite: Beautification / Pretty-printing
Adds indentation, spaces, and formatting to make code readable again.
πΉ 10. Compression
Definition: Reduces the size of data using algorithms (e.g., gzip, zip). Can be lossless (no data lost) or lossy (some data discarded).
Opposite: Decompression / Extraction
Restores the data back to its original or usable form.