Skip to content

Instantly share code, notes, and snippets.

@dhrumilp15
Last active April 18, 2021 15:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dhrumilp15/86112962312d2a749a27b679f58468ef to your computer and use it in GitHub Desktop.
Save dhrumilp15/86112962312d2a749a27b679f58468ef to your computer and use it in GitHub Desktop.
def create_plaintexts():
sdiff = list('0' + '1' * (62) + '0') # 011110 <-- (n - 2) 1's
diff = int(''.join(sdiff), 2) # 011110 <-- (n - 2) 1's = 2^63 - 2
assert diff == 2**63 - 2
plaintexts = []
for i in range(32):
binp = ['0']
for i in range(62):
binp.append(str(random.randint(0, 1))) # We create random binary numbers that start and end with 0s
binp.append('0')
p = ''.join(binp) # binary string of plaintext
xorp = int(p, 2) ^ diff
bxorp = list(f'{xorp:064b}') # plaintexts that are XORed with the differential
assert int(p, 2) ^ int(''.join(bxorp), 2) == diff
# plaintext, plaintext xor diff
plaintexts.append([p, ''.join(bxorp)])
# plaintext, complement MSB of plaintext
binp = comp(binp, 0)
bxorp = comp(bxorp, 0)
plaintexts.append([''.join(binp), ''.join(bxorp)])
# plaintext, complement MSB AND LSB of plaintext
binp = comp(binp, -1)
bxorp = comp(bxorp, -1)
plaintexts.append([''.join(binp), ''.join(bxorp)])
# plaintext, complement LSB of plaintext
binp = comp(binp, 0)
bxorp = comp(bxorp, 0)
plaintexts.append([''.join(binp), ''.join(bxorp)])
return plaintexts
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment