In [1]:
from message import Message
with open('test.txt','r') as source:
sample = source.read()
my_message = Message(sample)
my_message = my_message.filter()
In [2]:
counts = my_message.triplet_frequencies()
In [3]:
np.sum(counts)
In [4]:
import numpy as np
In [5]:
my_message.text
Out[5]:
In [6]:
a = [1,62,3,5,7,4,5,8,3,92]
b = np.argsort(a)
b[0:5]
Out[6]:
In [7]:
len(' ')
Out[7]:
In [74]:
import numpy as np
def best_keys(key_list, encrypted_message, natural_sample, number_returned = 10):
metric_list = []
for key in key_list:
decryption_attempt = encrypted_message.substitute(key)
metric = metric_function(decryption_attempt, natural_sample)
metric.append(metric)
ranking = np.argsort(metric_list)
return key_list[ranking[0]:ranking[number_returned]]
def metric_function(decryption_attempt, natural_sample):
decryption_attempt.triplet_frequencies()
difference = abs(natural_sample.rates - decryption_attempt.rates)
difference = np.absolute(difference) + 1e-10
metric = -np.sum(1/difference)
return metric
def metric_function2(decryption_attempt, natural_sample):
decryption_attempt.triplet_frequencies()
difference = abs(natural_sample.rates - decryption_attempt.rates)
difference = np.absolute(difference)
metric = -np.sum(difference)
return metric
In [63]:
from message import Message
with open('sample.txt','r') as source:
message1 = source.read()
with open('sample2.txt','r') as source:
message2 = source.read()
message1 = Message(message1)
message2 = Message(message2)
message1 = message1.filter()
message2 = message2.filter()
message1.triplet_frequencies()
message2.triplet_frequencies()
In [71]:
metric_function(message1,message2)
Out[71]:
In [72]:
with open('test.txt','r') as source:
message = source.read()
random_message = Message(message)
In [73]:
metric_function(random_message, message1)
Out[73]:
In [75]:
print metric_function(message1,message2)
print metric_function(random_message, message1)
print metric_function2(message1,message2)
print metric_function2(random_message, message1)
In [26]:
1 + 1e-3
Out[26]:
In [34]:
a = np.array([[1,2],[3,4]],dtype=np.float64)
In [35]:
1/a
Out[35]:
In [33]:
type(a[0])
Out[33]:
In [36]:
np.sum(a)
Out[36]:
In [ ]:
a = np.argsort(np.arange(5))
In [ ]:
a.size
In [ ]: