Heute habe ich eine .py-Datei gemacht, die mit einem vigenere-Quadrat verschlüsselte Strings entschlüsselt. Ich bin so weit gekommen, aber ich kann nicht scheinen, Räume zur cipher Liste und encr_txt hinzuzufügen, weil es die entschlüsselte Nachricht entstellt. Anstelle von "Nachricht ist, Hallo, mein Name ist schlank schattig", erhalten Sie "Nachricht ist, hellprvmwhwebwrw k d tady", wo, als ob ich Leerzeichen aus encr_txt und der Ciphl-Liste lasse, bekomme ich eine gute Nachricht. Ich weiß nicht, wie ich das beheben kann, es gibt auch keine Fehler, ich habe erst vor ein paar Tagen angefangen, in Python zu programmieren, wenn es offensichtlich ist, tut mir leid. Auch weiß ich, auf diese Weise leichter gemacht werden könnte, aber im Listen so wählte das Lernen ich es auf diese Weise statt, so etwas zu machen: mein Entschlüsselungsprogramm macht die falsche Sache
<a href="https://stackoverflow.com/questions/35711747/ascii-vigenere-cipher-not-decrypting-properly">Another question i found relating my problem but does not describe my situation</a>
Code:
# -*- coding: utf-8 -*-
#^encoding
# Encrypted text
# encr_txt = 'tkedobaxoudqrrffhhhalbmmcnedeo'
encr_txt = 'qexpg vy zeen ie wdrm elsmy'
#encr_list = list(encr_txt)
txtpos = 0
# Key to^
key = 'james'
keypos = 0
limit = len(encr_txt)
limitpos = 0
# Vigenere square
ciphr = ['abcdefghijklmnopqrstuvwxyz ',
'bcdefghijklmnopqrstuvwxyz a',
'cdefghijklmnopqrstuvwxyz ab',
'defghijklmnopqrstuvwxyz abc',
'efghijklmnopqrstuvwxyz abcd',
'fghijklmnopqrstuvwxyz abcde',
'ghijklmnopqrstuvwxyz abcdef',
'hijklmnopqrstuvwxyz abcdefg',
'ijklmnopqrstuvwxyz abcdefgh',
'jklmnopqrstuvwxyz abcdefghi',
'klmnopqrstuvwxyz abcdefghij',
'lmnopqrstuvwxyz abcdefghijk',
'mnopqrstuvwxyz abcdefghijkl',
'nopqrstuvwxyz abcdefghijklm',
'opqrstuvwxyz abcdefghijklmn',
'pqrstuvwxyz abcdefghijklmno',
'qrstuvwxyz abcdefghijklmnop',
'rstuvwxyz abcdefghijklmnopq',
'stuvwxyz abcdefghijklmnopqr',
'tuvwxyz abcdefghijklmnopqrs',
'uvwxyz abcdefghijklmnopqrst',
'vwxyz abcdefghijklmnopqrstu',
'wxyz abcdefghijklmnopqrtsuv',
'xyz abcdefghijklmnopqrtsuvw',
'yz abcdefghijklmnopqrtsuvwx',
'z abcdefghijklmnopqrtsuvwxy',
'abcdefghijklmnopqrtsuvwxyz ']
first = ciphr[0]
string = ''
def start():
global limitpos
limitpos += 1
global keypos
for i in ciphr:
if keypos == len(key):
keypos = 0
else:
pass
if i[0] == key[keypos]:
#print "%s, %s" % (i[0], i)
global currenti
currenti = i
#print currenti
finder()
break
else:
pass
def finder():
global keypos
global txtpos
done = False
position = 0
while done == False:
for i in currenti[position]:
if i == '_':
pass
if i == encr_txt[txtpos]:
global string
string = string + first[position]
#print "message is, %s" % string
keypos += 1
txtpos += 1
done = True
if limitpos == limit:
print "message is, %s" % string
break
else:
start()
else:
position += 1
pass
start()
eine Idee, wie Sie Leerzeichen hinzufügen, ohne die Nachricht zu verstopfen? – PizzaCat
@PizzaCat Sie können nicht. Die Nachricht, die Sie zu entschlüsseln versuchen, wurde mit einer Chiffre verschlüsselt, die die Leerzeichen in der Eingabe übersprang. Sie müssen die Räume alleine lassen, um sie korrekt zu entschlüsseln! – duskwuff
Ich fragte mich, ob ich es so schreiben könnte https://pastebin.com/LCfhwRys – PizzaCat