101525/tex/py101425keyprime.py

# (c) david vajda
# 10/14/25
# rsa - cracking the prime number equations for key

def nprod (p, q):
    return p*q

def phi (p, q):
    return (p-1)*(q-1)

p = 7
q = 17
d = 11
n = nprod (p, q)

i = 5
while i < 1024:
    e = 1
    while e < 1024:
        if d*e == (phi (p, q) * i) + 1:
            print ("e = ", e, "i = ", i)
            i = 1024
            break
        e = e + 2
    i = i + 1

def prim (p):
    i = 3;
    if p % 2 == 0:
        return 0
    while i < (p+1)/2:
    # while i < p:
        if (p % i) == 0:
            return 0
        i = i + 2
    return 1

# andere methode:
# ich kann die primfaktoren aufzaehlen
# 131 sieht aus wie 130 + 1
# ok und 130 sieht teilbar aus, warum ist 131 dann primzahl
# wenn plus 1, wegen dem beweis des pythagoras,
# und dem fakt, dass eine zahl in ihre primfaktoren zerlegt
# werden kann und nichts weiteres
# was sonst, jede zahl laesst sich als produkt anderer
# zahlen schreiben, oder ist sonst selbst eine primzahl
# womit das problem geloest waere

primfactor1 = 3
primfactor2 = 5
primfactor3 = 7
primfactor4 = 11
primfactor5 = 13
primfactor6 = 17
primfactor7 = 19
primfactor8 = 23
primfactor9 = 27
primfactor10 = 31
primfactor11 = 37
primfactor12 = 41
primfactor2 = 2
### ?

# 2, 2, 2, 2, 4, 2, 4, 4, 4, 6, 4

p = 1
P = []
Pd = []
while p < 1024:
    if prim (p):
        P = P + [p]
    p = p + 2

i = 1
while i < len (P):
    Pd = Pd + [P [i] - P [i-1]]
    i = i + 1

print (P)
print (Pd)

# lauflaengenkodierung
i = 0
x = 0
j = 0
while i < len (Pd):
    if x != Pd [i]:
        print("x = ", x, "j = ", j)
        x = Pd [i]
        j = 0
    i = i + 1
    j = j + 1

# wahrscheinlichkeitssatz der primzahlen mit lauflaengen kodierung
# annahme, dass der abstand von primzahlen im bereich 2, 4, 6, ...
# schwankt, ist beweisbar
# eine primzahl muss mindestens im abstand 2 zur anderen liegen
# und der abstand muss gerade sein, da: eine primzahl ungerade sein muss
# 1.) es ist davon aus zu gehen, dass bei hoeheren primzahlen die 2 ebenso
# in betracht kommt, wie bei niedrigeren
# 2.) es ist davon aus aus zu gehen, dass der wechsel 2, 4, 6, ...
# bei der lauflaengenkodierung mit grosser wahrscheinlichkeit
# gemessen an der relativen haeufigkeit im stichproben umfang
# im kleinen bereich, mit grosser wahrscheinlichkeit gegen 1 geht
# ein wechsel, von 2, 4, 6, 8, ... in der differenz ist wahrscheinlich
# davon ist aus zu gehen, dass je nach groesse der primzahlen
# die grenze wachsend ist
# wobei: nach oben von einem wachstum der grenze aus zu gehen ist
# im zweiten schritt versuche ich das verhaeltnis der aufeinander
# folgenden abstaende heraus zu finden

#falsch
i = 0
x = 0
j = 0
while i < len (Pd):
    if x != Pd [i]:
        print("x = ", x, "j = ", j, end=", ")
        x = Pd [i]
        j = 0
    i = i + 1
    j = j + 1

print("")
print("")
print("")
i = 1
x = 0
j = 0
while i < len (Pd):
    print (Pd [i]/Pd[i-1], end="  ")
    i = i + 1

# encrypt
# first table do by hand

def maketable_dec_digit_mod119_11 ():
    x = 0
    while x < 10:
        i = 1
        y = x
        while i < 11:
            y = (y * x % 119)
            i = i + 1
        print (x, "^(11) = ", y, " mod 119")
        x = x + 1

maketable_dec_digit_mod119_11 ()