Пример #1
0
def sign(sk, m, p, g, q):
    r = randRelPrime(q)
    s1 = modExp(g, r, p) % q

    rI = multInv(r, q)
    s2 = rI * (m + sk * s1) % q
    return (s1, s2)
Пример #2
0
def verify(pk, m, s, p, q, g):
    (s1, s2) = s
    s2I = multInv(s2, q)

    pks1 = modExp(pk, s1, p)
    gm = modExp(g, m, p)

    s1N = modExp(gm * pks1, s2I, p) % q

    if (s1 == s1N):
        return 1
    else:
        return 0
Пример #3
0
def keyGen(k):
    p = 0
    q = 0
    while (p == q):
        p = randPrime(int(k / 2))
        q = randPrime(int(k / 2))
    print("Found Prime p ", p)
    print("Found Prime q ", q)

    n = p * q
    print("Calculate n ", n)

    order = (p - 1) * (q - 1)
    print("Calculate order ", order)

    e = randRelPrime(order)
    print("Calculate public key value e ", e)

    d = multInv(e, order)
    print("Calculate private key value d ", d)

    pk = (n, e)
    sk = (n, d)
    return (pk, sk)
from RSA import keyGen, enc, dec, sign, verify
from helper import multInv
(pk, sk) = keyGen(10)

print("public key", pk)
print("private key", sk)

(n, e) = pk

m = 10
b = 5

print("signature of m should be " + str(sign(sk, m)))

blindsign = m * pow(b, e, n) % n
print("Blinded message " + str(blindsign))

sb = sign(sk, blindsign)
print("signed blind msg" + str(sb))

s = sb * multInv(b, n) % n
print("unblinded signature" + str(s))

print(verify(pk, m, s))
Пример #5
0
for i in range(2, 20):
    print("IsPrime:", i, helper.isPrime(i, 64))

for i in range(2, 100):
    result = helper.isPrime(i, 64)
    if (result):
        print(i)
print()

print("gcd(7,15)", helper.gcd(7, 15))
print("gcd(9,15)", helper.gcd(9, 15))
print("gcd(10,15)", helper.gcd(10, 15))
print("gcd(11,15)", helper.gcd(11, 15))
print()

print("multInv(7,1)", helper.multInv(7, 11))
print("multInv(1,11)", helper.multInv(1, 11))
print("multInv(3,11)", helper.multInv(3, 11))
print("multInv(8,11)", helper.multInv(8, 11))
print()

print("modexp(2,7,11)", helper.modExp(2, 7, 11))
print("modexp(5,17,11)", helper.modExp(5, 17, 11))
print("modexp(8,3,11)", helper.modExp(8, 3, 11))
print("modexp(4,8,11)", helper.modExp(4, 8, 11))

print("randprime", helper.randPrime(8))
print("randprime", helper.randPrime(40))
print("randprime", helper.randPrime(3))

print("randrelprime", helper.randRelPrime(9))
Пример #6
0
def dec(sk, c, p, q, g):
    (a, b) = c
    s = modExp(a, sk, p)
    m = (b * multInv(s, p)) % p
    #m = b*(modExp(a,multInv(sk,p),p)) % p
    return m