We
use software every day to perform all kinds of magical, powerful tasks.
It's the force behind stunning CGI graphics, safe online shopping, and
speedy Google searches. Software drives the modern world, but its inner
workings remain a mystery to many.
How Software Works explains how computers perform common-yet-amazing tasks that we take for granted every day. Inside you'll learn:
If you've ever wondered what really goes on behind your computer screen, How Software Works will give you fascinating look into the software all around you.
How Software Works explains how computers perform common-yet-amazing tasks that we take for granted every day. Inside you'll learn:
- How data is encrypted
- How passwords are used and protected
- How computer graphics are created
- How video is compressed for streaming and storage
- How data is searched (and found) in huge databases
- How programs can work together on the same problem without conflict
- How data travels over the Internet
If you've ever wondered what really goes on behind your computer screen, How Software Works will give you fascinating look into the software all around you.
The Goal of Encryption
Transposition: Same Data, Different Order
Cipher Keys
Attacking the Encryption
Substitution: Replacing Data
Varying the Substitution Pattern
Key Expansion
The Advanced Encryption Standard
Binary Basics AES Encryption: The Big Picture
Key Expansion in AES
AES Encryption Rounds
Block Chaining
Why AES Is Secure
Possible AES Attacks
The Limits of Private-Key Encryption
2 Passwords
Transforming a Password into a Number
Properties of Good Hash Functions
The MD5 Hash Function
Encoding the Password
Bitwise Operations
MD5 Hashing Rounds
Meeting the Criteria of a Good Hash Function
Digital Signatures
The Problem of Identity
Collision Attacks
Passwords in Authentication Systems
The Dangers of Password Tables
Hashing Passwords
Dictionary Attacks
Hash Tables
Hash Chaining
Iterative Hashing
Salting Passwords
Are Password Tables Safe?
Password Storage Services
A Final Thought
3 Web Security
How Public-Key Cryptography Solves the Shared Key Problem
Math Tools for Public-Key Cryptography
Invertible Functions
One-Way Functions
Trapdoor Functions
The RSA Encryption Method
Creating the Keys
Encrypting Data with RSA
RSA Effectiveness
RSA Use in the Real World
RSA for Authentication
Security on the Web: HTTPS
Handshaking
Transmitting Data Under HTTPS
The Shared Key Problem Solved?
4 Movie CGI
Software for Traditional Animation
How Digital Images Work
How Colors Are Defined
How Software Makes Cel Animations
From Cel Animation Software to Rendered 2D Graphics
Software for 3D CGI
How 3D Scenes Are Described
The Virtual Camera
Direct Lighting
Global Illumination
How Light Is Traced
Full-Scene Anti-Aliasing
Combining the Real and the Fake
The Ideal of Movie-Quality Rendering
5 Game Graphics
Hardware for Real-Time Graphics
Why Games Don’t Ray Trace
All Lines and No Curves
Projection Without Ray Tracing
Rendering Triangles
The Painter’s Algorithm
Depth Buffering
Real-Time Lighting
Shadows
Ambient Light and Ambient Occlusion
Texture Mapping
Nearest-Neighbor Sampling
Bilinear Filtering
Mipmaps
Trilinear Filtering
Reflections
Faking Curves
Distant Impostors
Bump Mapping
Tessellation
Anti-Aliasing in Real Time
Supersampling
Multisampling
Post-Process Anti-Aliasing
The Rendering Budget
What’s Next for Game Graphics
6 Data Compression
Run-Length Encoding
Dictionary Compression
The Basic Method
Huffman Encoding
Reorganizing Data for Better Compression
Predictive Encoding
Quantization
JPEG Images
A Different Way to Store Colors
The Discrete Cosine Transform
The DCT for Two Dimensions
Compressing the Results
JPEG Picture Quality
Compressing High-Definition Video
Temporal Redundancy
MPEG-2 Video Compression
Video Quality with Temporal Compression
The Present and Future of Video Compression
7 Search
Defining the Search Problem
Putting Data in Order
Selection Sort
Quicksort
Binary Search
Indexing
Hashing
Web Search
Ranking Results
Using the Index Effectively
What’s Next for Web Search
8 Concurrency
Why Concurrency Is Needed
Performance
Multiuser Environments
Multitasking
How Concurrency Can Fail
Making Concurrency Safe
Read-Only Data
Transaction-Based Processing
Semaphores
The Problem of Indefinite Waits
Orderly Queues
Starvation from Circular Waits
Performance Issues of Semaphores
What’s Next for Concurrency
9 Map Routes
What a Map Looks Like to Software
Best-First Search
Reusing Prior Search Results
Finding All the Best Routes at Once
Floyd’s Algorithm
Storing Route Directions
The Future of Routing