Example #1
0
def compute_wheel(limit):
    primes = seive(limit)
    circum = reduce(lambda x,y: x*y, primes, 1)
    spokes = [i for i in range(1, circum) if gcd(i, circum) == 1]
    diffs = [spokes[i+1] - s for i,s in enumerate(spokes[:-1])]
    diffs.insert(0, circum - spokes[-1] + 1)

    return primes, diffs
def attack2():
    prod = reduce(lambda x, y: x*y, keys, 1)

    factorise = {}
    
    for key in keys:
        div = praxis.gcd(key, (prod % (key*key)) / key)
        if div != 1:
            factorise[key] = (div, key / div)
    return factorise
def attack1():
    factorise = {}

    for i in range(len(keys)):
        for j in range(i):
            div = praxis.gcd(keys[i], keys[j])
            if div != 1:
                factorise[keys[i]] = (div, keys[i] / div)
                factorise[keys[j]] = (div, keys[j] / div)

    return factorise
Example #4
0
def encrypt(message, key_a, key_b):
    assert(gcd(key_a, 26) == 1)

    cipher = ""

    for m in message:
        if m.isalpha():
            x = ord(m.upper()) - ord("A")
            y = (key_a * x + key_b) % 26
            cipher += chr(y + ord("A"))
        else:
            cipher += m

    return cipher
Example #5
0
 def reduce_terms(self):
     g = gcd(self.num, self.den)
     self.num /= g
     self.den /= g