Cryptographic Components: Randomness, Algorithms, and Key Management