Ejemplo n.º 1
0
def gfunc(w, keyyielder):
    g1 = c.getbyteAt(w, 1)
    g2 = c.getbyteAt(w, 0)
    g3 = c.fvalue(g2 ^ keyyielder()) ^ g1
    g4 = c.fvalue(g3 ^ keyyielder()) ^ g2
    g5 = c.fvalue(g4 ^ keyyielder()) ^ g3
    g6 = c.fvalue(g5 ^ keyyielder()) ^ g4
    return c.concat(g5, g6)
Ejemplo n.º 2
0
def generateSubkeys(k):
    arr = []
    for rnd in range(c.numround):
        for x in range(12):
            k = c.rol(k, c.keylen * 8)
            arr.append(c.getbyteAt(k, ((4 * rnd) + (x % 4)) % c.keylen))
    return arr
Ejemplo n.º 3
0
def generateSubkeys(k):
    arr = [0 for x in range(12 * c.numround)]
    i = 0
    for rnd in range(c.numround - 1, -1, -1):
        for x in range(11, -1, -1):
            arr[i * 12 + x] = c.getbyteAt(k, ((4 * rnd) + (x % 4)) % c.keylen)
            k = c.ror(k, c.keylen * 8)
        i += 1
    return arr
Ejemplo n.º 4
0
def __encrypt__(p, k, keyyielder):
    w = c.whitening(p, k)
    arr = [
        c.getbyteAt(w, 3, 2),
        c.getbyteAt(w, 2, 2),
        c.getbyteAt(w, 1, 2),
        c.getbyteAt(w, 0, 2)
    ]
    for rnd in range(c.numround):
        arr = roundfunc(arr, keyyielder)
    y = c.concat(c.concat(arr[2], arr[3], 2), c.concat(arr[0], arr[1], 2), 4)
    ci = c.whitening(y, k)
    return [
        c.getbyteAt(ci, 3, 2),
        c.getbyteAt(ci, 2, 2),
        c.getbyteAt(ci, 1, 2),
        c.getbyteAt(ci, 0, 2)
    ]