What is a nonce in cryptography?
Could you elaborate on the concept of a nonce in the realm of cryptography? I'm particularly interested in understanding its purpose and how it's utilized in cryptographic systems. Specifically, I'd like to know if a nonce is a randomly generated number, and if so, how does it contribute to the security of encrypted communications? Additionally, I'm curious about the difference between a nonce and other cryptographic primitives, such as initialization vectors or salts. Your explanation would be greatly appreciated.