Rail Fence Cipher - auf der Suche nach einer besseren Lösung

Habe ich codiert Rail Fence Cipher in Python. Ich Frage mich, ob es könnte eine bessere Lösung sein.

Für diejenigen, die nicht wissen, was rail fence cipher ist, es ist im Grunde eine Methode zu schreiben, im Klartext in einer Weise, die es schafft lineares Muster in eine Spirale Weg.
Beispiel - wenn "FOOBARBAZ" rail-eingezäunt mit Schlüssel 3.

F . . . A . . . Z . . .
. O . B . R . A . Q . X
. . O . . . B . . . U .

Lesen der oben genannten Spirale line-by-line, die cipher text wird "FAZOBRAQXOBU". Lesen Sie mehr unter - Rail-Zaun - Wikipedia.

def cipher(s, key, graph=False) :
    down=True
    raw_out=[]
    out=''
    i=0
    for x in range(key) :
        raw_out.append({})
    for pos in range(len(s)) :
        raw_out[i][pos]=s[pos]
        if i==key-1 :
            down=False
        if i==0 :
            down=True
        if down :
            i=i+1
        else :
            i=i-1
    for p in raw_out :
        for q in p :
            out+=p[q]
    if graph :
        return raw_out
    return out

def decipher(s, key) :
    map_list=cipher(s, key, True) #CREATING JUST FOR MAPPING - WHICHth CHARACTER OF THE STRING - IS WHICHth CHARACTER OF THE CIPHER
    new={}
    out=''
    s_counter=0
    for x in map_list :
        for y in x :
            new[y]=s[s_counter]
            s_counter+=1
    for p in new :
        out+=new[p]
    return map_list

Ich Frage mich, ob es einen besseren Weg, dies zu tun, da mein Verfahren ist sehr teuer, es verwendet einige Wörterbücher.

Code in einer beliebigen Sprache wird begrüßt.

Schreibe einen Kommentar