Obfuscation (software)

In software development, obfuscation is the practice of creating source or machine code that is intentionally difficult for humans or computers to understand.

Types of obfuscations include simple keyword substitution, use or non-use of whitespace to create artistic effects, and self-generating or heavily compressed programs.

According to Nick Montfort, techniques may include: A variety of tools exist to perform or assist with code obfuscation.

While most commercial obfuscation solutions transform either program source code or platform-independent bytecode (as used by Java and .NET), some also work directly on compiled binaries.

This is formalized in the many proposals for indistinguishability obfuscation, a cryptographic primitive that, if possible to build securely, would allow one to construct many other kinds of cryptography, including completely novel types that no one knows how to make.

However, some developers may employ code obfuscation for the purpose of reducing file size or increasing security.

The issue is addressed in the GNU General Public License by requiring the "preferred form for making modifications" to be made available.

vectorial version
vectorial version