Skip to content

Commit 109a0a1

Browse files
committed
Edited encryption2.py to test lesmis novel, failed
Edited graphs.py to add ranked comparison test Edited keytestsutie.py to change autocorr kmax parameter to 100 Edited TRNG2.py to create 5 separate TRNG outputs
1 parent 0b687db commit 109a0a1

File tree

9 files changed

+94
-13
lines changed

9 files changed

+94
-13
lines changed

TRNG0.json

Lines changed: 1 addition & 0 deletions
Large diffs are not rendered by default.

TRNG1.json

Lines changed: 1 addition & 0 deletions
Large diffs are not rendered by default.

TRNG2.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

TRNG2.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,17 @@ def gaussian(self, N, offset=0):
8585

8686
if __name__ == "__main__":
8787
provide = Provide("Projects\\EE\\2022-08-all.bin")
88-
integers = provide.integer(1000000, 26)
88+
integers = provide.integer(5000000, 26)
8989
integers = integers + 1
90-
with open("Projects\\EE\\TRNG2.json","w") as f:
91-
json.dump(integers.tolist(),f)
90+
lst = integers.tolist()
91+
lst0 = lst[0:1000000]
92+
lst1 = lst[1000000:2000000]
93+
lst2 = lst[2000000:3000000]
94+
lst3 = lst[3000000:4000000]
95+
lst4 = lst[4000000:]
96+
lsts = (lst0,lst1,lst2,lst3,lst4)
97+
count = 0
98+
for i in lsts:
99+
with open("Projects\\EE\\TRNG{}.json".format(str(count)),"w") as f:
100+
json.dump(i,f)
101+
count += 1

TRNG3.json

Lines changed: 1 addition & 0 deletions
Large diffs are not rendered by default.

TRNG4.json

Lines changed: 1 addition & 0 deletions
Large diffs are not rendered by default.

encryption2.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ def loadkey(filename):
4040

4141
def loadtxt(fname):
4242
out = ""
43-
with open(fname,"r") as f:
43+
with open(fname,"r",encoding="UTF-8") as f:
4444
for line in f:
4545
n = line.replace(" ","")
4646
n = n.translate(str.maketrans("","",string.punctuation))
@@ -101,9 +101,12 @@ def decrypt(ciphertext,keyfile):
101101
y = decrypt(x,"pi-with-coprime2023-b26.json")
102102
print(y)
103103

104-
writetxt(encrypt(loadtxt("Amber-Spyglass-Clean.txt"),"testkeyfinal.json"),"Amber-Spyglass-Encrypted.txt")
105-
writejson(FormatTextToNum(loadtxt("Amber-Spyglass-Encrypted.txt")),"Amber-Spyglass_Encrypted-Enumerated.json")
104+
#writetxt(encrypt(loadtxt("Amber-Spyglass-Clean.txt"),"testkeyfinal.json"),"Amber-Spyglass-Encrypted.txt")
105+
#writejson(FormatTextToNum(loadtxt("Amber-Spyglass-Encrypted.txt")),"Amber-Spyglass_Encrypted-Enumerated.json")
106106
#b26 = convertbase26(loadkeysbase10("coprime-digits-mod10-2023-1000k.json","pi-digits.json",length=1000000))
107107
#b26 = convertbase26(loadkeysbase10("pi-digits.json",length=1000000))
108108
#writejson(b26,"test26v2.json")
109-
#print(convertbase26([3,1,4,1,5,9,2,6,5,3]))
109+
#print(convertbase26([3,1,4,1,5,9,2,6,5,3]))
110+
writetxt(loadtxt("lesmis.txt"),"lesmis-clean.txt")
111+
writetxt(encrypt(loadtxt("lesmis-Clean.txt"),"testkeyfinal.json"),"lesmis-Encrypted.txt")
112+
writejson(FormatTextToNum(loadtxt("lesmis-Encrypted.txt"))[0:700000],"lesmis-Encrypted-Enumerated-cut.json")

graphs.py

Lines changed: 66 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,16 @@
1616
trng = trng[0:len(cipher)]
1717

1818
def plotcorr(data,maxk=100):
19-
plot_correlogram(data,maxk=maxk)
19+
graph = correlogram(data,maxk)
20+
x = np.linspace(1,maxk,maxk)
21+
y = np.array([graph[i] for i in range(1,maxk+1)])
22+
plt.grid()
23+
plt.plot(x,y,marker=".",color="b",label="Ciphertext Correlogram")
24+
plt.xlabel("Lag (k)")
25+
plt.ylabel("Autocorrelation")
26+
plt.legend()
27+
plt.show()
28+
return x,y
2029

2130
def plotcorrdouble(data1,data2,maxk=100):
2231
#import numpy as np
@@ -43,6 +52,34 @@ def plotfreq(data):
4352
plt.xlabel("Character")
4453
plt.show()
4554

55+
def plotfreqerr(data):
56+
expected = len(data)/26
57+
dist = freq_analysis(data)
58+
x = np.linspace(1,26,26)
59+
y = np.array([(100*(dist[i]-expected)/expected) for i in range(1,27)])
60+
plt.grid()
61+
plt.plot(x,y,color="r",marker=".")
62+
plt.xlabel("Character")
63+
plt.ylabel("% Error")
64+
plt.show()
65+
return x,y
66+
67+
def plotfreqerrdouble(data1,data2):
68+
expected = len(data1)/26
69+
dist1 = freq_analysis(data1)
70+
x1 = np.linspace(1,26,26)
71+
y1 = np.array([(100*(dist1[i]-expected)/expected) for i in range(1,27)])
72+
dist2 = freq_analysis(data2)
73+
x2 = np.linspace(1,26,26)
74+
y2 = np.array([(100*(dist2[i]-expected)/expected) for i in range(1,27)])
75+
plt.grid()
76+
plt.plot(x1,y1,color="b",marker=".",label="Frequency Error Ciphertext")
77+
plt.plot(x2,y2,marker=".",color="r",label="Frequency Error TRNG")
78+
plt.xlabel("Character")
79+
plt.ylabel("% Error")
80+
plt.legend()
81+
plt.show()
82+
4683
def plotcarlo(data):
4784
data1 = data
4885
data2 = data1[::-1]
@@ -76,10 +113,13 @@ def plotnextdig(data):
76113
plt.xlabel("Difference")
77114
plt.ylabel("% Error")
78115
plt.show()
116+
return x,y
79117

80118
def plotnextdighist(data):
81119
dist = difftest(data)
82120
plt.bar(dist.keys(), dist.values(), 1, color='r',edgecolor="black",linewidth=1.2)
121+
plt.xlabel("Difference")
122+
plt.ylabel("Frequency")
83123
plt.show()
84124

85125
def plotnextdigdouble(data1,data2):
@@ -108,6 +148,7 @@ def plotslope(data):
108148
plt.xlabel("Difference")
109149
plt.ylabel("% Error")
110150
plt.show()
151+
return x,y
111152

112153
def plotslopedouble(data1,data2):
113154
expected = len(data1)/26
@@ -128,7 +169,28 @@ def plotslopedouble(data1,data2):
128169
def plotslopehist(data):
129170
dist = slopetest(data)
130171
plt.bar(dist.keys(), dist.values(), 1, color='r',edgecolor="black",linewidth=1.2)
172+
plt.xlabel("Difference")
173+
plt.ylabel("Frequency")
174+
plt.show()
175+
176+
def plotcomparison(data1,data2,test):
177+
x1,lst1 = test(data1)
178+
x2,lst2 = test(data2)
179+
lst1.sort()
180+
lst2.sort()
181+
y1 = np.array(lst1)
182+
y2 = np.array(lst2)
183+
#diffs = [abs(lst2[i]-lst1[i]) for i in range(len(lst1))]
184+
#print("Max diff: " + str(max(diffs)))
185+
print("Correlation Coeff: " + str(np.corrcoef(y1,y2)[1,0]))
186+
plt.grid()
187+
plt.plot(x1,y1,color="b",marker=".",label="Cipher Ranked Autocorrelation")
188+
plt.plot(x2,y2,color="r",marker=".",label="TRNG Ranked Autocorrelation")
189+
plt.legend()
190+
plt.xlabel("Rank")
191+
plt.ylabel("Autocorrelation")
131192
plt.show()
193+
132194

133195
if __name__ == "__main__":
134196
#plotcorr(cipher)
@@ -139,4 +201,6 @@ def plotslopehist(data):
139201
#plotnextdighist(trng)
140202
#plotslope(trng)
141203
#plotslopedouble(cipher,trng)
142-
plotslopehist(trng)
204+
plotslopehist(trng)
205+
#plotfreqerrdouble(cipher,trng)
206+
#plotcomparison(cipher,trng,plotfreqerr)

keytestsuite.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
data = [x for x in str(f.readline())]
1616
print(len(data))
1717

18-
data1 = data[0:664044]
18+
data1 = data[0:664044]#[0:700000]
1919
data2 = data1[::-1]
2020

2121
#datax and datax2 adds together 1st and 2nd, 3rd and 4th, etc
@@ -69,8 +69,8 @@
6969
n = (data2[i]) + (data2[i+1]) + (data2[i+2]) #+ (data2[i+3]) + (data2[i+4])
7070
datax2.append(int(n))"""
7171

72-
print("Maximum autocorrelation (k,autocorrelation): " + str(max_autocorr(data1,20)))
73-
print("Minimum autocorrelation (k,autocorrelation): " + str(min_autocorr(data1,20)))
72+
print("Maximum autocorrelation (k,autocorrelation): " + str(max_autocorr(data1,100)))
73+
print("Minimum autocorrelation (k,autocorrelation): " + str(min_autocorr(data1,100)))
7474
#plot_correlogram(data1,100)
7575
#print("Maximum pattern error from expected (pattern,%): " + str(max_pattern(data1)))
7676
#print("Minimum pattern error from expected (pattern,%): " + str(min_pattern(data1)))

0 commit comments

Comments
 (0)