asteroidsteam icon

Cypher

asteroidsteam | PRO | 05/06/19 11:51:18 PM UTC | 0 ⭐ | 484 👁️ | Never ⏰ | []
Python |

2.24 KB

|

None

|

0 👍

/

0 👎

 
 
 
#FILE USAGE:
#python3 <thisfile.py> <key> <message> [-d for decoding (optional)]
 
 
 
import sys;
 
strs = 'abcdefghijklmnopqrstuvwxyz1234567890 '      #use a string like this, instead of ord() 
def shifttext(shift,inp):
    data = []
    for i in inp:                     #iterate over the text not some list
        if i.strip() and i in strs:                 # if the char is not a space ""  
            data.append(strs[(strs.index(i) + shift) % len(strs)])    
        else:
            data.append(i)           #if space the simply append it to data
    output = ''.join(data)
    return output
 
def gentable():
    table = [];
    for i in range(0,len(strs)+1):
        table.append(shifttext(i,strs));
    return table;
def getIndex(letter):
    x = 0;
    for i in strs:
        if letter == i:
            return x;
        x += 1;
    return 39;
table = gentable();
def getAlphabet(index):
    return table[index];
def getLetterD(index,letter):
    for alph in table:
        if alph[index] == letter:
            return alph[0];
def getLetter(index,alphabet):
    return alphabet[index];
def encode(toEncode_,codeword_):
    i=0;
    word = '';
    for c in toEncode_:
        v = codeword_[i];
        word += getLetter(getIndex(v),getAlphabet(getIndex(c)));
        i+=1;
        if i >= len(codeword_):
            i = 0;
    return(word);
def decode(toDecode_,codeword_):
    i=0;
    word = '';
    for c in toDecode_:
        v = codeword_[i];
        word+=getLetterD(getIndex(v),c);
        i+=1;
        if i >= len(codeword_):
            i = 0;
    return(word);
codeword = ''
esd = ''
decodeM = False
if len(sys.argv) >= 2:
    codeword = sys.argv[1];
    esd = ''
    decodeM = False;
    for i in range(2,len(sys.argv)):
        if sys.argv[i] == '-d':
            decodeM = True
        else:
            esd += sys.argv[i] + " ";
    if (esd == ''):
        print("Usage: python3 {0} code input [-d (DECODE MODE)]".format(sys.argv[0]));
        sys.exit();
else:
    print("Usage: python3 {0} code input [-d (DECODE MODE)]".format(sys.argv[0]));
    sys.exit();
esd = esd[:-1]
if (decodeM):
    print('"'+decode(esd,codeword)+'"');
else:
    print('"'+encode(esd,codeword)+'"');

Comments