Beispiel #1
0
 def test_sha2state(self):
     testData = [b"test str", b"string longer than 512 bits" + b"A" * 512, b"very long" + b"X" * 3000, bytes(range(256))]
     for msg in testData:
         hash1 = sha1.sha1(msg)
         h0, h1, h2, h3, h4 = sha1.process_all(msg)
         a0, a1, a2, a3, a4 = sha1.sha2state(hash1)
         self.assertEqual(a0, h0)
         self.assertEqual(a1, h1)
         self.assertEqual(a2, h2)
         self.assertEqual(a3, h3)
         self.assertEqual(a4, h4)
Beispiel #2
0
 def test_sha2state(self):
     testData = [
         b"test str", b"string longer than 512 bits" + b"A" * 512,
         b"very long" + b"X" * 3000,
         bytes(range(256))
     ]
     for msg in testData:
         hash1 = sha1.sha1(msg)
         h0, h1, h2, h3, h4 = sha1.process_all(msg)
         a0, a1, a2, a3, a4 = sha1.sha2state(hash1)
         self.assertEqual(a0, h0)
         self.assertEqual(a1, h1)
         self.assertEqual(a2, h2)
         self.assertEqual(a3, h3)
         self.assertEqual(a4, h4)
Beispiel #3
0
def atack(key_len, msg, mac_msg, msg_new):
    # compute glue padding and convert to bytes
    _, glue_padding = sha1.padding(b"X" * key_len + msg)
    gl = sha1.chunks(glue_padding, 8)
    glue_padding = bytes([int(i, 2) for i in gl])
    msg_fake = msg + glue_padding + msg_new

    _, msg_new_pad = sha1.padding(b"X" * key_len + msg + glue_padding + msg_new)
    mnp = sha1.chunks(msg_new_pad, 8)
    msg_new_pad = bytes([int(i, 2) for i in mnp])
    h0, h1, h2, h3, h4 = sha1.sha2state(mac_msg)
    m, _ = sha1.padding(msg_new + msg_new_pad)
    h0, h1, h2, h3, h4 = sha1.process(m, h0, h1, h2, h3, h4)
    mac_fake = "%08x%08x%08x%08x%08x" % (h0, h1, h2, h3, h4)

    return msg_fake, mac_fake
Beispiel #4
0
def atack(key_len, msg, mac_msg, msg_new):
    # compute glue padding and convert to bytes
    _, glue_padding = sha1.padding(b"X" * key_len + msg)
    gl = sha1.chunks(glue_padding, 8)
    glue_padding = bytes([int(i, 2) for i in gl])
    msg_fake = msg + glue_padding + msg_new

    _, msg_new_pad = sha1.padding(b"X" * key_len + msg + glue_padding +
                                  msg_new)
    mnp = sha1.chunks(msg_new_pad, 8)
    msg_new_pad = bytes([int(i, 2) for i in mnp])
    h0, h1, h2, h3, h4 = sha1.sha2state(mac_msg)
    m, _ = sha1.padding(msg_new + msg_new_pad)
    h0, h1, h2, h3, h4 = sha1.process(m, h0, h1, h2, h3, h4)
    mac_fake = '%08x%08x%08x%08x%08x' % (h0, h1, h2, h3, h4)

    return msg_fake, mac_fake