Fact-checked by Grok 2 weeks ago

XOR cipher

In , the XOR cipher is a simple symmetric algorithm that operates by applying the (XOR) to combine each element of the with a corresponding element from a keystream derived from the , producing the . This process is reversible, as applying the same XOR operation to the and keystream recovers the original . The XOR cipher belongs to the class of additive ciphers and serves as a foundational building block in designs. The most secure variant of the XOR cipher is the (OTP), where the keystream is a truly random of the same length as the , used only once for . Invented by in 1917 as an automated teletype system, the OTP was enhanced by Joseph Mauborgne to emphasize single-use keys for unbreakable security. In 1949, formally proved that the OTP provides perfect secrecy, meaning the ciphertext reveals no information about the to an adversary without the , assuming ideal . However, practical challenges in , distribution, and secure storage limit its use to specialized scenarios like diplomatic communications. In less secure implementations, the XOR cipher employs a repeating or shorter keystream, transforming it into a basic akin to the binary . Such systems are highly vulnerable to attacks, including , known-plaintext attacks, and exploitation of key repetition, as demonstrated by methods like the adapted for binary data. Despite these weaknesses, the XOR operation's efficiency and simplicity make it indispensable in contemporary ; for instance, in (CTR) mode defined by NIST 800-38A, a generates a pseudorandom keystream that is XORed with the to enable parallelizable, stream-like . Modern s, such as ChaCha20 or those in the eSTREAM portfolio, build upon XOR principles with pseudorandom number generators to enhance security.

Fundamentals of XOR

Binary XOR Operation

The binary XOR operation, denoted as ⊕ or ^, is a fundamental binary logical operation in digital computing that outputs 1 only when its two input bits differ and 0 when they are the same. This exclusive-or behavior distinguishes it from other logical operations like AND or OR. The complete behavior of the XOR operation is captured in its truth table, which enumerates all possible input combinations and their outputs:
Input AInput BA ⊕ B
000
011
101
110
This table defines XOR for single bits and serves as the basis for its extension to larger data units. When applied bitwise, XOR operates independently on each pair of corresponding bits in two strings or multi-bit values, such as bytes or words. For instance, consider two 8-bit values: 01101001 (decimal 105) and 01010101 (decimal 85). Performing XOR yields 00111100 (decimal 60), computed bit by bit: 0⊕0=0, 1⊕1=0, 1⊕0=1, 0⊕1=1, 1⊕0=1, 0⊕1=1, 0⊕0=0, 1⊕1=0. This pairwise application ensures that the operation preserves the length and alignment of the inputs while producing a result that highlights differences at the bit level. XOR extends seamlessly to multi-bit operations on larger data structures, such as 16-bit words, 32-bit integers, or even continuous streams of data, where it processes inputs sequentially byte-by-byte (or bit-by-bit in bit streams). In , for example, two byte streams of equal length are aligned, and XOR is applied to each successive byte pair to generate an output stream of the same length. This modular approach allows XOR to handle arbitrary-sized data efficiently in and software implementations.

Properties for Cryptography

The XOR operation possesses a self-inverse property, where applying the operation twice with the same value returns the original input: A \oplus B \oplus B = A. This characteristic enables symmetric and decryption using the identical stream, as the decryption process mirrors encryption without additional transformations. In the GF(2), XOR functions as addition modulo 2, treating binary bits as field elements where 0 and 1 are the only values. This linearity confers several algebraic properties essential for cryptographic designs: commutativity (A \oplus B = B \oplus A), allowing operand order irrelevance; associativity ((A \oplus B) \oplus C = A \oplus (B \oplus C)), permitting flexible grouping in chained operations; and the identity element (A \oplus 0 = A), ensuring unchanged inputs when combined with zero. Additionally, every element serves as its own additive inverse (A \oplus A = 0), reinforcing the operation's reversibility. These traits underpin the use of XOR in structures like AES, where GF(2^8) arithmetic facilitates efficient mixing. XOR demonstrates sensitivity to key modifications, as a single-bit flip in the key inverts the corresponding bit in the output, altering the result predictably at that position. This bit-level responsiveness supports in broader ciphers by ensuring input variations manifest in the output, though full diffusion typically requires integration with permutations or other nonlinear components. The bitwise execution of XOR involves no carry-over between positions, enabling fully independent processing of each bit without interdependencies that could complicate analysis or computation. This isolation simplifies parallelizable implementations and maintains the operation's efficiency in and software .

Mechanism of XOR Cipher

Encryption Process

The encryption process of an XOR cipher transforms into through a bitwise (XOR) operation applied between the bits or bytes and a corresponding stream. This operation, denoted as C = P \oplus K, where P represents the , K the stream, and C the resulting , combines the input data with the such that each output bit or byte is the modulo-2 sum of the corresponding and elements. To apply this process, the plaintext and key stream must first be aligned, typically treating the data as binary sequences of equal length. If the key is shorter than the plaintext—as is common in basic implementations—the key is repeated cyclically to extend the key stream across the entire message length. For instance, the key byte at position i in the stream is selected as K[i \mod \len(K)], ensuring continuous coverage without truncation or padding beyond the message end. The XOR cipher primarily operates in stream mode, performing the operation byte-wise on sequential data for processing of continuous inputs, such as text or network streams, rather than dividing the data into fixed blocks. This byte-oriented approach facilitates efficient of variable-length messages. A representation of the encryption algorithm is as follows:
function encrypt([plaintext](/page/Plaintext) P, [key](/page/Key) K):
    n = length(P)
    [ciphertext](/page/Ciphertext) C = empty array of size n
    for i from 0 to n-1:
        C[i] = P[i] XOR K[i mod length(K)]
    return C
This iterative process ensures that every byte is directly mapped to a byte via the XOR, leveraging the operation's bitwise nature for simplicity and speed.

Decryption Process

The decryption process in an XOR cipher recovers the original from the by performing the same bitwise XOR operation with the , leveraging the self-inverse property of XOR where applying the operation twice returns the original value. Mathematically, if the C is obtained as C = P \oplus [K](/page/Key) during (where P is the and K is the ), decryption computes P = C \oplus K, since (P \oplus K) \oplus K = P. This symmetry requires the recipient to possess the exact same as used in ; any mismatch results in incorrect output that appears as random . For stream-based , decryption involves regenerating or reapplying the keystream in the identical sequence and position as during , ensuring bit-by-bit alignment between the and keystream. Desynchronization—such as from delays, , or key stream offset—produces garbage output until resynchronization is achieved, often necessitating explicit mechanisms like markers or reinitialization. A advantage of the XOR operation in decryption is its limited propagation: a single-bit in the or keystream affects only the corresponding bit in the recovered , with no to adjacent bits or blocks, making it suitable for noisy channels compared to ciphers with broader spreading.

Examples and Implementations

Simple Text Example

To illustrate the XOR cipher applied to a short text message, consider the "". In ASCII encoding, the character 'H' corresponds to decimal value 72 ( 01001000), and 'I' to 73 (01001001). The repeating is "KEY", with ASCII values 'K' = 75 (01001011), 'E' = 69 (01000101), and 'Y' = 89 (01011001); for this two-byte , the key uses the first two bytes "KE". The encryption process XORs each plaintext byte with the corresponding key byte bitwise, where the result is 1 only if the input bits differ. For the first byte:
01001000 ('H') ⊕ 01001011 ('K') = 00000011 (decimal 3).
For the second byte:
01001001 ('I') ⊕ 01000101 ('E') = 00001100 (decimal 12).
The resulting ciphertext consists of bytes 3 and 12, which are non-printable control characters (ETX and form feed, respectively) in the ASCII standard. This example aligns the components as follows:
PositionPlaintext Char (Decimal, Binary)Key Char (Decimal, Binary)Ciphertext (Decimal, Binary)
1 (72, 01001000) (75, 01001011) (00000011)
2I (73, 01001001) (69, 01000101) (00001100)
Text in XOR ciphers is typically processed using ASCII (7-bit characters, often padded to 8 bits) or encoding, which maintains compatibility with ASCII for basic Latin characters.

Programming Implementation

The XOR cipher can be implemented programmatically in various languages due to the of the bitwise XOR operation. In , a common approach involves converting input strings to bytes for binary handling, applying the XOR operation byte-by-byte with a repeating key, and returning the result as bytes to preserve non-printable characters. This method ensures compatibility with arbitrary data beyond ASCII text. Here is a basic for XOR (which also serves as decryption, given the operation's ):
python
def xor_cipher(text: str, key: str) -> bytes:
    text_bytes = text.encode('utf-8')
    key_bytes = key.encode('utf-8')
    result = bytearray(len(text_bytes))
    for i in range(len(text_bytes)):
        result[i] = text_bytes[i] ^ key_bytes[i % len(key_bytes)]
    return bytes(result)
This implementation first encodes the input text and key to UTF-8 bytes to handle them as sequences of integers (0-255). The loop iterates over each byte of the text, XORing it with the corresponding byte from the key, which repeats cyclically using the modulo operator (i % len(key_bytes)) if the key is shorter than the text. The result is stored in a bytearray for mutable access and converted back to immutable bytes for output. The ^ operator performs the bitwise XOR on integers, as defined in Python's operator module. For demonstration, encrypting the "Hello" with the "secret" yields the following (shown in for readability):
  • Plaintext bytes: b'Hello'[0x48, 0x65, 0x6C, 0x6C, 0x6F]
  • Key bytes: b'secret'[0x73, 0x65, 0x63, 0x72, 0x65, 0x74]
  • : xor_cipher("Hello", "secret")b'\x3B\x00\x0F\x1E\x0A' (hex: 3b 00 0f 1e 0a)
Applying the same function to the with the original recovers the , confirming reversibility. This example validates against manual byte-wise calculations for the same inputs. Such implementations are portable across languages, as the bitwise XOR is a fundamental operation. For instance, in C++, the ^ operator similarly applies XOR to integers or bytes in arrays, allowing analogous code with standard library types like std::string or unsigned char[].

Applications in Cryptography

Stream Ciphers

A stream cipher is a method of symmetric-key encryption in which plaintext bits are combined with a pseudorandom keystream, typically using the bitwise XOR operation, to generate the ciphertext. The keystream is produced by a pseudorandom number generator (PRNG) seeded with a secret key, ensuring that each bit of plaintext is encrypted independently without requiring padding or block alignment. Historical examples include RC4 (now deprecated due to security vulnerabilities), which generates a variable-length keystream for XOR combination, and modern prominent examples include Salsa20 (and its variant ChaCha20), which uses a core function to produce a high-speed keystream directly XORed with the input data. For effective , the keystream must exhibit strong unpredictability, appearing indistinguishable from true random bits to an adversary, and must be at least as long as the to avoid repetition or truncation issues. The XOR operation itself introduces malleability to the , meaning that alterations to the will result in corresponding, predictable changes to the decrypted without needing the , provided the attacker knows or reuses parts of the keystream. Thus, the overall hinges on the PRNG's robustness, as a weak keystream could enable attacks like known-plaintext recovery through simple XOR subtraction. Historically, the , deployed in mobile networks, utilized three linear feedback shift registers (LFSRs) clocked irregularly to generate a 64-bit keystream, which was then XORed with the voice or for . However, due to vulnerabilities such as correlation attacks and a short effective key length, A5/1 has been deprecated in favor of stronger alternatives like A5/3, with practical breaks demonstrated using only minutes of intercepted traffic. In contemporary applications, stream ciphers employing XOR are favored in protocols like TLS for encrypting bulk data streams, where their bit-by-bit processing offers superior efficiency and lower compared to block ciphers, especially on resource-constrained devices. For instance, ChaCha20 in TLS 1.3 combines a 256-bit with a to produce a keystream XORed against the , enabling high-throughput encryption suitable for and VPNs without the overhead of modes like . This efficiency stems from XOR's simplicity, requiring minimal computational resources while maintaining compatibility with hardware-accelerated implementations.

One-Time Pad

The one-time pad (OTP) is a cryptographic system that employs the XOR operation between the and a truly random of equal length to the message, with the key used only once and never reused for any other communication. This method, a variant of the Vernam , ensures that each bit of the plaintext is XORed with a corresponding bit from the key to produce the . Historically, the OTP was developed by in 1917 while working at for securing teletype communications and enhanced by Joseph Mauborgne in 1918 to emphasize a truly random, one-time key, later patenting the system in 1919. It gained prominence in diplomatic and military applications, including the Moscow-Washington established in 1963 during the , which used OTP encryption via the ETCRRM II machine to exchange messages between the U.S. and with absolute security. The OTP achieves perfect secrecy, as formalized by in his 1949 theorem on secrecy systems, meaning that the ciphertext provides no information about the to an adversary without access to the . Under this definition, for any fixed , every possible is equally likely, resulting in a over all possible ciphertexts regardless of the underlying . This property holds because the random masks the completely, rendering statistical analysis impossible. Despite its theoretical invincibility, the OTP faces significant practical challenges, primarily in secure and storage, as the key must be transmitted through a separate, trusted channel without interception. These issues, requiring physical couriers or pre-shared materials for large volumes, make the OTP infeasible for widespread, large-scale communications without dedicated secure infrastructure.

Security Analysis

Theoretical Strengths

The XOR cipher, when employed in the (OTP) scheme with a truly random key of equal length to the , achieves perfect as defined by . This is formalized by the condition that the of the given the equals the unconditional of the , H(P|C) = H(P), which holds because the uniform key space ensures every possible plaintext is equally likely for any observed . The proof relies on the bitwise nature of XOR (equivalent to addition modulo 2), where the distribution is uniform and independent of the , rendering the scheme information-theoretically secure against any adversary with unbounded computational power. Under ideal conditions with a unique, random per , the XOR cipher resists known-plaintext attacks by producing output that is computationally indistinguishable from random noise without knowledge of the . Even if an adversary knows the and corresponding for a specific , the recovered bits cannot be leveraged to decrypt other messages, as each is independent and unreused. This property stems from the uniform randomness introduced by the key XOR operation, ensuring no partial information leaks across messages. The XOR cipher offers high computational efficiency, requiring only O(n) time complexity for an n-bit message through simple bitwise operations that process data in parallel. This bitwise parallelism is particularly advantageous on modern hardware, where instructions like those in AES-NI extensions enable rapid vectorized XOR computations across multiple bits or bytes simultaneously. As a result, it imposes minimal overhead, making it suitable for resource-constrained environments while maintaining theoretical security guarantees. Compared to modular addition operations in other ciphers, XOR provides bit-level independence, where each bit's output depends solely on the corresponding input bits without propagation effects like carries. This avoids unintended patterns or correlations that can arise in addition-based schemes, enhancing the randomness of the ciphertext under ideal key conditions.

Known Vulnerabilities

One of the primary vulnerabilities of the XOR cipher arises from keystream reuse, where the same keystream is applied to multiple plaintexts. In this scenario, if two plaintexts P_1 and P_2 are encrypted using the identical keystream K to yield ciphertexts C_1 = P_1 \oplus K and C_2 = P_2 \oplus K, an attacker can compute C_1 \oplus C_2 = P_1 \oplus P_2, directly recovering the XOR difference between the plaintexts without knowledge of K. This exposes sensitive information, such as linguistic patterns or specific content correlations, facilitating further cryptanalysis. Historical exploitation of this flaw occurred in the U.S. Venona project during World War II and the early Cold War, where Soviet intelligence agencies reused portions of one-time pad keys due to material shortages, allowing partial decryption of thousands of diplomatic and espionage messages intercepted between 1942 and 1945. A provides another straightforward weakness, leveraging the invertibility of XOR. If an attacker obtains a segment of P and its corresponding C = P \oplus K, the keystream portion K is trivially recovered via K = P \oplus C. This recovered keystream can then decrypt other ciphertexts sharing the same or predict subsequent bytes if the keystream generator exhibits deterministic behavior. Such attacks are particularly effective against stream ciphers in protocols where predictable structures, like headers or footers, are common. Biases in the (PRNG) producing the keystream introduce statistical predictability, enabling correlation or crib-dragging attacks where guessed "cribs" align with biased output patterns. For instance, in the (WEP) protocol, the PRNG's key scheduling algorithm exhibits biases in the initial keystream bytes, allowing attackers to statistically infer secret keys from observed ciphertexts after collecting as few as 40,000 packets. These flaws stem from non-uniform distributions in RC4's permutation array during initialization, amplifying vulnerabilities when XOR-combined with . When employing a short, repeating key, the XOR cipher succumbs to , as the periodic keystream modulates plaintext letter frequencies into detectable ciphertext patterns. This is analogous to the Vigenère cipher's polyalphabetic substitution, where the key length can be estimated via methods like the —identifying repeated n-grams and computing their greatest common divisors—followed by partitioning the into subsets for monoalphabetic against expected language distributions (e.g., 'E' at 12.7% in English). Unlike a true with a non-repeating, random key of message length, short keys (e.g., 8-16 bytes) expose these biases, enabling key recovery through chi-squared tests or metrics on the partitioned streams.

References

  1. [1]
    [PDF] Crypto: Symmetric-Key Cryptography
    • Encryption: C = P xor K. • Decryption: P = C xor K. • A key can only be used once. • Impractical! Page 7. Block Cipher. • Encrypt/Decrypt messages in fixed.
  2. [2]
    [PDF] XOR ciphers model and the attack to it
    Jan 29, 2022 · We use Shannon's cipher model to describe XOR ciphers by incorporating equinumerous alphabets of plaintexts, keys, and ciphertexts. The ...
  3. [3]
    [cs/0508079] Re-visiting the One-Time Pad - arXiv
    Aug 18, 2005 · Abstract: In 1949, Shannon proved the perfect secrecy of the Vernam cryptographic system,also popularly known as the One-Time Pad (OTP).
  4. [4]
    One-Time Pad - SpringerLink
    Apr 27, 2023 · 1.2 Analysis. The invention of the one-time pad can be attributed to Gilbert S. Vernam, who developed an automated system for teletypewriters ...
  5. [5]
    [PDF] NIST SP 800-38A, Recommendation for Block Cipher Modes of ...
    The OFB mode is illustrated in Figure 4. 6.5 The Counter Mode. The Counter (CTR) mode is a confidentiality mode that features the application of the forward.Missing: XOR | Show results with:XOR
  6. [6]
    2.11. Supplemental: Bitwise Operators
    A simple example follows each truth table, illustrating the meaning of "the bitwise operators operate on the corresponding bits of the two operands." Operating ...
  7. [7]
    [PDF] Bitwise Operations - Department of Computer Science and ...
    Every bitwise operation (except shift) is defined by a truth table. A truth table represents one or two input bits and their output bit. For example ...
  8. [8]
    [PDF] CS429: Computer Organization and Architecture - Bits and Bytes
    Feb 3, 2020 · Bits and Bytes. Cool Stuff with XOR. Bitwise XOR is a form of addition, with the extra property that each value is its own additive inverse: A ...
  9. [9]
    Introduction to CryptoHack - XOR Properties
    Self-Inverse: A ⊕ A = 0. Let's break this down. Commutative means that the order of the XOR operations is not important. Associative means that a chain of ...<|separator|>
  10. [10]
    [PDF] PART 4: Finite Fields of the Form GF(2n) Theoretical Underpinnings ...
    Feb 13, 2011 · operation of addition in GF(2) is like the logical XOR operation. the same as adding in GF(28). That is because each “number” is its own ...
  11. [11]
    Does XOR have diffusion properties? - Cryptography Stack Exchange
    Feb 18, 2017 · The diffusion is not a property of the XOR, but a property of the complete structure. The shifts, XORs and rounds cause the diffusion.
  12. [12]
    [PDF] Stream Ciphers - Lihao Xu
    So far, stream ciphers look unbelievably easy: One simply takes the plaintext, performs an XOR operation with the key and obtains the ciphertext. On the ...
  13. [13]
    CSC 161 : XOR Cipher - Jerod Weinman
    The XOR cipher uses a secret key and the bitwise exclusive OR operation (⊕) to encrypt and decrypt data. The same operation is used for both.Missing: sources | Show results with:sources
  14. [14]
    [PDF] Cryptography
    Sep 21, 2021 · • Synchronous stream cipher. – Key stream obtained only from the secret key K. – Works for unreliable channels if plaintext has packets with ...
  15. [15]
    [PDF] Development of Data Encryption Algorithms for Secure ...
    Figure 2-4: Block Diagram of Self-Synchronous Stream Cipher. ... For this reason, Synchronous stream ciphers do not exhibit error propagation. Figure 2-3 ...<|control11|><|separator|>
  16. [16]
    ASCII table - Table of ASCII codes, characters and symbols
    This page shows the extended ASCII table which is based on the Windows-1252 character set which is an 8 bit ASCII table with 256 characters and symbols.ASCII Characters · Extended ASCII · Ascii 0 · Ascii 1Missing: HIKEY | Show results with:HIKEY
  17. [17]
    Bitwise operators: bit shifts, AND, OR, XOR, NOT - UAF CS
    Bitwise XOR: ^​​ Output bits are 1 if either input bit is 1, but not both. E.g., 3^5 == 6; or 011 ^ 101 == 110.
  18. [18]
    Stream Ciphers - GeeksforGeeks
    Jul 15, 2025 · The Plaintext will undergo XOR operation with keystream bit-by-bit and produces the Cipher Text. Example: Plain Text : 10011001. Keystream : ...
  19. [19]
    Demystifying Stream Ciphers in Symmetric Encryption | Infosec
    Jan 11, 2021 · The plain text and keystream produce ciphertext using XOR Operation. Plain text is XOR'ed with keystream bit by bit to produce CipherText.
  20. [20]
    [PDF] Stream ciphers - UMD Computer Science
    Salsa20 Stream Cipher (not to be confused with. Nelson's Salsa Class). Notation: ⊕ is the usual bit-wise XOR. + is mod 232 addition. <<< will mean you ...
  21. [21]
    [PDF] Lecture Notes on Stream Ciphers and RC4 - Rick Wash
    This property, that a change in the ciphertext will produce a known predictable change in the plaintext, is called malleability. 3.1 Brute Force Key Search. The ...
  22. [22]
    [PDF] The One Time Pad
    Stream ciphers are semantically secure. Thm: G:K ⟶{0,1} n is a secure PRG ⇒ stream cipher E derived from G is sem. sec. ∀ sem. sec. adversary A , ∃a PRG ...
  23. [23]
    [PDF] A New Guess-and-Determine Attack on the A5/1 Stream Cipher
    Register R2: 10. Register R3: 10. Fig. 1. A5/1 Stream Cipher. Page 3. The A5/1 stream cipher is built from three short linear feedback shift registers (LFSRs).
  24. [24]
    [PDF] A Real-World Attack Breaking A5/1 within Hours
    due to the export restrictions — for deploying GSM outside of Europe. Though the ...
  25. [25]
    The Benefit of Stream Ciphers - wolfSSL
    Aug 25, 2010 · Stream ciphers work well for large or small chucks of data. They`re suitable for smaller data sizes because no block size is required.Missing: bulk efficiency
  26. [26]
    Vernam Cipher
    Sep 6, 2004 · We describe the Vernam Cipher, also known as the one-time-pad. Gilbert Vernam invented and patented his cipher in 1917 while working at AT&T.
  27. [27]
    Vernam - Crypto Museum
    Aug 11, 2012 · The Vernam Cipher is a symmetric cryptographic principle for adding a key stream to a plaintext, invented in 1917 by Gilbert Vernam (1890-1960).
  28. [28]
    [PDF] Communication Theory of Secrecy Systems - cs.wisc.edu
    In this paper a theory of secrecy systems is developed. The approach is on a theoretical level and is intended to com- plement the treatment found in standard ...
  29. [29]
    One-time-pad - Cipher Machines and Cryptology
    Then, in 1917, AT&T research engineer Gilbert Vernam developed a system to encrypt teletype communications. Although Vernam's invention mathematically ...
  30. [30]
    Washington Moscow Hotline - Crypto Museum
    Jan 27, 2013 · Below each scanner, a standard IBM PC is installed for the One-Time Pad (OTP) encryption of the data. Documents were printed on an EPSON FX-80 ...
  31. [31]
    [PDF] Lecture 5: - One-time pad - CS408 Cryptography & Internet Security
    Perfect secrecy: observation of the ciphertext provides no information to an adversary. ○. Result due to Shannon, 1949. C. E. Shannon, “Communication. Theory of ...
  32. [32]
    [PDF] On extensions of the one-time-pad
    Mar 5, 2021 · Shannon developed a mathematical proof that OTP offers perfect secrecy. The OTP is vulnerable to a known-plaintext attack, since key K can be ...
  33. [33]
    [PDF] On the Efficiency of Software Implementations of Lightweight Block ...
    The focus was towards how the hardware can influence the usage of lightweight cryptographic primitives in commercial and research based wireless sensor nodes ...
  34. [34]
    [PDF] The Additive Differential Probability of ARX* - Nicky Mouha
    Modular addition provides non-linearity, bit rotation provides diffusion within a single word, and XOR provides diffusion be- tween words and linearity. A ...
  35. [35]
    [PDF] Stream ciphers
    Techniques for re-synchronization include re-initialization, placing special markers at regular intervals in the ciphertext, or, if the plaintext contains ...
  36. [36]
    [PDF] The Venona S tory - National Security Agency
    Hugh. Gingerich led to detection of reused key in GRU messages and, ultimately, to the solution and translation of GRU messages. The Naval GRU systems resisted ...
  37. [37]
    None
    Summary of each segment: