def KeyGenerator(password): #generiert das Keypaar aus einem Passwort mit sha3 P = [ Decimal(1763), Decimal(YCalc(1763)) ] #Jan: P0 -> kurze Zahl; P1 -> lange Zahl mit Komma nach ca. 7 Stellen Privat = int(KeyGen.KeyGen(password), 16) Public = (multiplikation(P, Privat)) return Privat, Public
def ElGamalDecrypt(cipher, password): C = [0, 0] C[0] = Decimal(cipher.split('v')[0]) zwischenwert = cipher.split('v')[1] C[1] = Decimal(zwischenwert.split('u')[0]) d = Decimal(zwischenwert.split('u')[1]) x = int(KeyGen.KeyGen(password), 16) c1 = multiplikation(C, x)[0] m1 = str(d / c1 % prim + 1) m1 = m1.split('.') m1 = int(m1[0]) output = UTF8.UTFdeConvert(m1) return output
def KeyGenerator(password): P = [Decimal(3), Decimal(YCalc(3))] Privat = int(KeyGen.KeyGen(password), 16) Public = multiplikation(P, Privat) return Privat, Public
if n == 0: r = [] r.append(0) r.append(0) return r if n % 2 == 1 and n != 1: zwischenwert = multiplikation(p, n - 1) r = additionMG(p, zwischenwert) return r if n == 1: return p x = int( KeyGen.KeyGen( 'das ist das passwort, welches zu kurz ist, du lappen, anscheinen sei er immernoch zu kurz. ich meine jetzt ernsthaft?' ), 16) def ElGamal(text, Key): m = int(UTF8.UTFConvert(text)) print(type(m)) k = random.randint(0, 100) P = [Decimal(3), Decimal(YCalc(3))] Y = multiplikation(P, x) c = multiplikation(Y, k)[0] Px = 3 C = multiplikation(P, k) d = c * m % prim