If you think of software as a building, you might say it’s made up of code blocks. Many of these building blocks are custom-built for a specific application. Others are standard components and used in many buildings—cryptographic algorithms and functions are a prime example of this.