Initialization vector
An initialization vector is a typically nonsecret value supplied to a cryptographic operation to initialize or vary its processing across uses.
Hacking Cryptography
An initialization vector is a public or nonsecret value combined with secret keying material to vary cryptographic inputs across messages.
- How it is used
- Uses IVs to vary per-message cipher inputs while retaining shared secret keys.
- How deep it goes
- Traces IV handling through WEP key construction, RC4 bias exploitation, and CBC request chaining rather than defining generic IV algorithms.
- Examples
- Demonstrates public WEP IVs concatenated with a PSK and browser requests reusing a previous CBC ciphertext block.
- What you can do after
- Diagnose/debug with it by recognizing weak or reused IV handling that permits RC4 key recovery or BEAST-style plaintext guessing.
Read how Hacking Cryptography explains initialization vector →
Software Security for Developers
An initialization vector is a non-secret value combined with encryption input to vary the cryptographic transformation, such as the per-encryption value required by AES-GCM.
- How it is used
- Uses a fresh non-secret value to prevent repeated plaintext from producing recognizable ciphertext under the same key.
- How deep it goes
- Explains IV purpose, visibility, generation, sizing, reuse failures, and Java AES-GCM handling without covering GCM mathematics.
- Examples
- Uses repeated plaintext, encrypted files, Java SecureRandom, AES-GCM output concatenation, and tamper-detection exercises.
- What you can do after
- Apply it via AES-GCM by generating a secure unique 12-byte IV, storing it with ciphertext, and rejecting authentication failures.
Read how Software Security for Developers explains initialization vector →
Real-World Cryptography
An initialization vector is an input value that initializes a cryptographic encryption operation and is typically combined with a key to produce distinct ciphertexts.
- How it is used
- Explains how AES-CBC starts encryption and avoids exposing repeated plaintext patterns.
- How deep it goes
- Connects IV generation, transmission, decryption, and authentication, but does not descend into implementation code.
- Examples
- Uses AES-CBC diagrams showing random IVs, required decryption inputs, and bit-flipping attacks against public IVs.
- What you can do after
- Operate/configure AES-CBC by generating unpredictable IVs and authenticating them with ciphertext before decryption.
Read how Real-World Cryptography explains initialization vector →
Related concepts
- cipher block chaining modeused by · Cipher block chaining is a block-cipher mode that XORs each plaintext block with the preceding ciphertext block before encryption, using an initialization vector for the first block.
- ciphertextconfigured by · Ciphertext is data produced by encryption whose original content is intended to be unreadable without the required decryption capability.
- Galois/Counter Modeused by · Galois/Counter Mode is an authenticated-encryption mode that combines counter-mode encryption with authentication of ciphertext and associated data.
- noncekind of · A nonce is a value intended for one-time use within a specified cryptographic, authentication, or authorization context.
- RC4used by · RC4 is a stream-cipher algorithm that generates a pseudorandom keystream from a variable-length secret key using a permutation-based internal state.
These guides are generated from the text of Manning books by Manning's knowledge graph and link to the sections they draw on. The full books are available on liveBook and at manning.com.


