mirror of https://github.com/dirtbags/moth.git
26 lines
897 B
Python
26 lines
897 B
Python
|
import crypto
|
||
|
import cbc
|
||
|
import diffie
|
||
|
import hashlib
|
||
|
|
||
|
IV = [0xaa]*64
|
||
|
aliceKey = hashlib.sha512(bytes('alice.%d' % diffie.key, 'utf-8')).digest()
|
||
|
bobKey = hashlib.sha512(bytes('bob.%d' % diffie.key, 'utf-8')).digest()
|
||
|
|
||
|
alice = b"""Only one more puzzle to go. They'll never get it though, since we use a one time pad. I need to add more text here to pad this."""
|
||
|
bob = b"""I wouldn't be so sure of that. The key is: in the same vein """
|
||
|
|
||
|
def C(text, key):
|
||
|
out = bytearray()
|
||
|
for i in range( len( text ) ):
|
||
|
out.append(key[i] ^ text[i])
|
||
|
|
||
|
return bytes(out)
|
||
|
|
||
|
c = cbc.cipherBlockChainingE(aliceKey, IV, C, alice)
|
||
|
print('<dl><dt>Alice<dd>', crypto.hexFormat(c))
|
||
|
assert cbc.cipherBlockChainingD(aliceKey, IV, C, c) == alice
|
||
|
c = cbc.cipherBlockChainingE(bobKey, IV, C, bob)
|
||
|
assert cbc.cipherBlockChainingD(bobKey, IV, C, c) == bob
|
||
|
print('<dt>Bob<dd>', crypto.hexFormat(c), '</dl>')
|