def xgcd(a, b): #Расширенный алгоритм Евклида if a == lint.Lint("0"): return 0, 1, b if b == lint.Lint("0"): return 1, 0, a px = lint.Lint("0") ppx = lint.Lint("1") py = lint.Lint("1") ppy = lint.Lint("0") while b > lint.Lint("0"): q = a / b a, b = b, a % b x = ppx - q * px y = ppy - q * py ppx, px = px, x ppy, py = py, y return ppx, ppy, a
a, b = b, a % b x = ppx - q * px y = ppy - q * py ppx, px = px, x ppy, py = py, y return ppx, ppy, a def inv(a, p): #Число в -1 степени по модулю p x, y, g = xgcd(a, p) return (x % p + p) % p if __name__ == "__main__": tmp = lint.Lint() p = lint.Lint(tmp.read("p.txt")) q = lint.Lint(tmp.read("q.txt")) g = lint.Lint(tmp.read("g.txt")) w = lint.Lint(tmp.read("w.txt")) r = lint.Lint(tmp.read("r.txt")) e = lint.Lint(tmp.read("e.txt")) inv_g = inv(g, p) y = p.powmod(inv_g, w, p) x = p.powmod(g, r, p) print "Ключи считаны\n"
if __name__ == "__main__": if len(sys.argv) != 5: print("wrong count of argument!!!") print("USAGE : python ./rsa.py mes.txt p.txt q.txt e.txt") sys.exit(-1) f = open(sys.argv[1]) mes = int(f.read()) #Сообщение из файла f.close() mes = lint.Lint(str(mes)) #Сообщение в виде большого числа p = lint.Lint(mes.read(sys.argv[2])) #read p q = lint.Lint(mes.read(sys.argv[3])) #read q e = lint.Lint(mes.read(sys.argv[4])) #read e mod = p * q phi = (p - lint.Lint("1")) * (q - lint.Lint("1")) d = gend(e, phi) encode = d.powmod(mes, e, mod) #Шифровка decode = d.powmod(encode, d, mod) #Расшифровка
return (x % p + p) % p if __name__ == "__main__": if len(sys.argv) !=6: print ("wrong count of argument!!!") print ("USAGE : python ./elgamal.py mes.txt p.txt g.txt x.txt k.txt") sys.exit (-1) f = open(sys.argv[1]) mes = int(f.read()) f.close() mes = lint.Lint(str(mes)) p = lint.Lint(mes.read(sys.argv[2]))# read p g = lint.Lint(mes.read(sys.argv[3]))#read g x = lint.Lint(mes.read(sys.argv[4]))#read x k = lint.Lint(mes.read(sys.argv[5]))#read k y = p.powmod(g, x, p) a = p.powmod(g, k, p) #Шифровка b = p.powmod(y, k, p) #Шифровка b = (mes * b) % p #Расшифровка
return ppx, ppy, a def inv(a, p): #Число в -1 степени по модулю p x, y, g = xgcd(a, p) return (x % p + p) % p if __name__ == "__main__": f = open(sys.argv[1]) mes = int(f.read()) f.close() mes = lint.Lint(str(mes)) p = lint.Lint(mes.read("p.txt")) g = lint.Lint(mes.read("g.txt")) x = lint.Lint(mes.read("x.txt")) k = lint.Lint(mes.read("k.txt")) y = p.powmod(g, x, p) a = p.powmod(g, k, p) #Шифровка b = p.powmod(y, k, p) #Шифровка b = (mes * b) % p #Расшифровка
def gend(a, b): #Генерироваие числа d while True: x, y, g = xgcd(a, b) z = x % b break return z if __name__ == "__main__": f = open(sys.argv[1]) mes = int(f.read()) #Сообщение из файла f.close() p = lint.Lint(mes.read("p.txt")) q = lint.Lint(mes.read("q.txt")) e = lint.Lint(mes.read("e.txt")) mes = lint.Lint(str(mes)) #Сообщение в виде большого числа mod = p * q phi = (p - lint.Lint("1")) * (q - lint.Lint("1")) d = gend(e, phi) encode = d.powmod(mes, e, mod) #Шифровка decode = d.powmod(encode, d, mod) #Расшифровка
while b > lint.Lint("0"): q = a / b a, b = b, a % b x = ppx - q * px y = ppy - q * py ppx, px = px, x ppy, py = py, y return ppx, ppy, a def inv(a, p): #Число в -1 степени по модулю p x, y, g = xgcd(a, p) return (x % p + p) % p if __name__ == "__main__": tmp = lint.Lint() if len(sys.argv) !=7: print ("wrong count of argument!!!") print ("USAGE : python ./schnorr.py p.txt q.txt g.txt w.txt r.txt e.txt") sys.exit (-1) p = lint.Lint(tmp.read(sys.argv[1]))#read p q = lint.Lint(tmp.read(sys.argv[2]))#read q g = lint.Lint(tmp.read(sys.argv[3]))#read g w = lint.Lint(tmp.read(sys.argv[4]))#read w r = lint.Lint(tmp.read(sys.argv[5]))#read r e = lint.Lint(tmp.read(sys.argv[6]))#read e inv_g = inv(g, p)
import sys import lint as lib def Exit(): print "Для выхода нажмите Enter...\n" sys.exit(-1) if len(sys.argv) != 5 and len(sys.argv) != 6: print "\nНеверно заданы параметры командной строки!\n" Exit() binary = False a = lib.Lint() b = lib.Lint() c = lib.Lint() if len(sys.argv) == 5: num1 = lib.Lint(a.read(sys.argv[1])) num2 = lib.Lint(b.read(sys.argv[3])) a = num1 b = num2 else: binary = True a = lib.Lint(a.binread(sys.argv[1])) b = lib.Lint(b.binread(sys.argv[3]))