Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import crybas
- from random import randint
- # shamir
- def shamir(m):
- p = crybas.prime_generate()
- if m > p:
- return "error: message too long."
- # Limits
- down_limit = 10 ** 7
- up_limit = 10 ** 9
- # Alice
- # Ca generation
- while True:
- Ca = randint(down_limit, up_limit)
- if crybas.extended_gcd(Ca, p - 1)[0] == 1:
- break
- # Da generation
- Da = crybas.extended_gcd(Ca, p - 1)[1]
- if Da < 0:
- Da += p - 1
- # Bob
- # Cb generation
- while True:
- Cb = randint(down_limit, up_limit)
- if crybas.extended_gcd(Cb, p - 1)[0] == 1:
- break
- # Db generation
- Db = crybas.extended_gcd(Cb, p - 1)[1]
- if Db < 0:
- Db += p - 1
- # Alice
- x1 = crybas.fast_pow(m, Ca, p)
- # Bob
- x2 = crybas.fast_pow(x1, Cb, p)
- # Alice
- x3 = crybas.fast_pow(x2, Da, p)
- # Bob
- x4 = crybas.fast_pow(x3, Db, p)
- return x4
- # shamir
- # elgamal
- def elgamal(m):
- p = crybas.prime_generate()
- g = crybas.g_generate(p)
- if m > p:
- return "error: message too long."
- # Alice
- k = randint(1, p - 1)
- a = crybas.fast_pow(g, k, p)
- x = randint(1, p)
- y = crybas.fast_pow(g, x, p)
- b = crybas.fast_pow_multiplicate(y, k, p, m)
- # Bob
- m_from_alice = crybas.fast_pow_multiplicate(a, p - 1 - x, p, b)
- return m_from_alice
- # elgamal
- # vernam
- def vernam(m):
- k = randint(1, 1000000000)
- e = m ^ k
- e_decrypt = e ^ k
- return e_decrypt
- # vernam
- # rsa
- def rsa(m):
- p = crybas.prime_generate()
- q = crybas.prime_generate()
- n = p * q
- if m > n:
- return "Error: message too long."
- f = (p - 1) * (q - 1)
- d = randint(1, f)
- while True:
- if crybas.extended_gcd(d, f)[0] == 1:
- break
- d = randint(1, f)
- c = crybas.extended_gcd(f, d)[2]
- if c < 0:
- c += f
- e = crybas.fast_pow(m, d, n)
- m_from_alice = crybas.fast_pow(e, c, n)
- return m_from_alice
- # rsa
- def use_ciphers():
- m = randint(1, 1000000)
- print("message:", m)
- print("***********************")
- print("shamir:", shamir(m))
- print("elgamal:", elgamal(m))
- print("vernam:", vernam(m))
- print("rsa:", rsa(m))
- use_ciphers()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement