A cryptographic algorithm is a mathematical method for protecting data confidentiality and integrity. Its security depends not only on the algorithm, but also on the software or hardware implementation that applies it. section 1.5
Practical security work focuses on implementing popular algorithms, observing how attackers break them, and separating mathematical weaknesses from engineering failures. The treatment deliberately emphasizes practice rather than underlying mathematical theory. section 1.4 section 1.5
Use cryptographic algorithms with these engineering rules:
- Prefer widely used, thoroughly tested implementations instead of writing production cryptography from scratch. section 1.4
- Review interactions between cryptographic components carefully, because individually sound components can combine into subtle weaknesses. section 1.5
- If new cryptographic code is unavoidable, obtain review from as many qualified experts as possible. section 1.5
Rainbow tables against hashed passwords
A concrete exercise builds a rainbow table to crack hashed passwords, tracing the attack against specific code lines and exposing both its theoretical applicability and practical limitations. section 1.4

