• Neverclear@lemmy.dbzer0.com
    link
    fedilink
    English
    arrow-up
    20
    ·
    edit-2
    7 months ago

    XOR cleartext once with a key you get ciphertext. XOR the ciphertext with the same key you get the original cleartext. At its core this is the way the old DES cipher works.

    A bit of useful trivia: If you XOR any number with itself, you get all zeros. You can see this in practice when an assembly programmer XOR’s a register with itself to clear it out.

    • Quazatron@lemmy.world
      link
      fedilink
      English
      arrow-up
      13
      ·
      7 months ago

      That’s how it was done in the old days to save a few cycles in Z80 assembly. XOR A instead of LD A, 0.

    • Malfeasant@lemm.ee
      link
      fedilink
      English
      arrow-up
      6
      ·
      edit-2
      7 months ago

      an x86 assembly programmer

      Ftfy. not all CPUs have an xor register with itself instruction.

      • Q*Bert Reynolds@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        3
        ·
        7 months ago

        There are a lot more architectures than just x86 that are capable of XORing a register with itself (ie. ARM and RISC-V), and if you took OP to mean the accumulation register specifically, pretty much all CPUs going back as far as I can think have had that functionality.

    • PetteriPano@lemmy.world
      link
      fedilink
      English
      arrow-up
      5
      ·
      7 months ago

      Apple had this undocumented function for screenshotting back on iOS 3.1, and kind of let you use it while waiting for better frameworks in iOS 4.0

      At some point they started rejecting your app automatically if they found the symbol for that function in your app. I didn’t want to leave my 3.1 users in the dust for no reason, so I did the same trick to obfuscate the symbol name before dynamically linking it in.

      It worked right up until they stopped supporting iOS 3.1 completely.