Initial release
This commit is contained in:
65
Les Avengers cryptanalystes I.py
Normal file
65
Les Avengers cryptanalystes I.py
Normal file
@@ -0,0 +1,65 @@
|
||||
input = "CJKDPQZZZLSULOEXFPNMXOSVLJSVRHRMFFOABIKBZFJM"
|
||||
proxima = "PROXIMA"
|
||||
|
||||
def vigenere(key, message):
|
||||
message = message.upper().replace(" ", "")
|
||||
key = key.upper()*(len(message)//len(key)+1)
|
||||
|
||||
plain = ""
|
||||
for i in range(len(message)):
|
||||
plain = plain + chr(ord('A') + (ord(message[i]) + ord(key[i])) % 26)
|
||||
return plain
|
||||
|
||||
def vigenere_1(key, message):
|
||||
message = message.upper().replace(" ", "")
|
||||
key = key.upper()*(len(message)//len(key)+1)
|
||||
|
||||
plain = ""
|
||||
for i in range(len(message)):
|
||||
plain = plain + chr(ord('A') + (ord(message[i]) - ord(key[i])) % 26)
|
||||
return plain
|
||||
|
||||
print("*", vigenere("FUA", 'PRO'))
|
||||
print("*", vigenere("XGA", 'PRO'))
|
||||
|
||||
keys = list()
|
||||
for i in range(26):
|
||||
for j in range(26):
|
||||
key = chr(i+ord('A')) + chr(j+ord('A'))
|
||||
res = vigenere(key, proxima[:len(key)])
|
||||
if input.find(res) == -1:
|
||||
continue
|
||||
for k in range(26):
|
||||
key = chr(i+ord('A')) + chr(j+ord('A')) + chr(k+ord('A'))
|
||||
res = vigenere(key, proxima[:len(key)])
|
||||
if input.find(res) == -1:
|
||||
continue
|
||||
for l in range(26):
|
||||
key = chr(i+ord('A')) + chr(j+ord('A')) + chr(k+ord('A')) + chr(l+ord('A'))
|
||||
res = vigenere(key, proxima[:len(key)])
|
||||
if input.find(res) == -1:
|
||||
continue
|
||||
for m in range(26):
|
||||
key = chr(i+ord('A')) + chr(j+ord('A')) + chr(k+ord('A')) + chr(l+ord('A')) + chr(m+ord('A'))
|
||||
res = vigenere(key, proxima[:len(key)])
|
||||
if input.find(res) == -1:
|
||||
continue
|
||||
for n in range(26):
|
||||
key = chr(i+ord('A')) + chr(j+ord('A')) + chr(k+ord('A')) + chr(l+ord('A')) + chr(m+ord('A')) + chr(n+ord('A'))
|
||||
res = vigenere(key, proxima[:len(key)])
|
||||
if input.find(res) == -1:
|
||||
continue
|
||||
for o in range(26):
|
||||
key = chr(i+ord('A')) + chr(j+ord('A')) + chr(k+ord('A')) + chr(l+ord('A')) + chr(m+ord('A')) + chr(n+ord('A')) + chr(o+ord('A'))
|
||||
res = vigenere(key, proxima[:len(key)])
|
||||
if input.find(res) == -1:
|
||||
continue
|
||||
keys.append(key)
|
||||
|
||||
for key in keys:
|
||||
res = vigenere_1(key, input[input.find(vigenere(key, proxima)):])
|
||||
print(key, res)
|
||||
|
||||
print("")
|
||||
print(vigenere_1("LOKI", input))
|
||||
|
||||
Reference in New Issue
Block a user