Exemple #1
0
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
Exemple #2
0
        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"
Exemple #3
0

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)  #Расшифровка
Exemple #4
0
	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
	
	#Расшифровка 
Exemple #5
0
    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

    #Расшифровка
Exemple #6
0
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)  #Расшифровка
Exemple #7
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

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)
Exemple #8
0
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]))