Peer review: Python encyphering script

A. Jones netzapper at
Thu Feb 28 04:18:01 CET 2002

It's my second day Pythoning and I've written this code to encypher
text (or files, ostensibly) into two pieces, neither of which can be
used to determine the message.

Any problems pointed out, clunky lines spotted, or security problems
would be most appreciated.  Also, if you've seen something like this,
if you'd tell me, please.

For now, no interface, just C&P between sessions of IDLE.

ASCII converts to numbers because of future security measures (such as
inserting chunks of random data to pad small messages, which would
then automatically delete themselves in the process of decrypting
using multiplication by 0)

Source below.


#encyphering tool 
plaintext = "Isn't it awfully nice to have a penis; isn't it
frightfully good to have it on!" #The variable makes it obvious.
blarg = [] #To hold translation of ASCII to num
for b in plaintext:
#    print b #Was here for development purposes.
    blarg.append(ord(b)) #Turn it into a list of ASCII numbers
                         #nums make sorting easier&append/ord makes a
nice list
plaintext = "Text purged."

blurb = {} #To hold 1:1 value/offset references
b = 0 #reuse variable so's to destroy evidence/make my life easier
for z in blarg:
    if z in blurb: #duplicate key fixer
            if type(blurb[z]) == "<type 'list'>": #Stops nesting
                temp = blurb[z] #Used to create first list entry
                blurb[z] = temp
    else: blurb[z] = [b] #sets dictionary with values as keys, offsets
as objects
    b = b+1 #Next step in the offset counter... clunky.

valuelist = blurb.keys() #extract keys of dictionary
valuelist.sort() #to be randomized later(date)

finval = [] #to hold final value list
finoff = [] #to hold final offset list
for r in valuelist:
    z = 0
    while z < len(blurb[r]): #Writes number of values equal to number
of offsets
        z = z+1
    for q in blurb[r]: #Decomposes my clunky nesting lists/dicts

blurb = {}  #Destroy the evidence!
valuelist = []

#decyphering tool
text = [] #finval
key = [] #finoff
numdict = {}
z = 0
for r in key: #This here is the heart of the decryption process.
Simply coalates the lists.
    numdict[r] = text[z]
    z = z + 1
readlist = numdict.keys()
readlist.sort() #puts the keys/offsets in order
plaintext = ""
for r in readlist:
    plaintext = plaintext + chr(numdict[r])
print plaintext #prints plaintext

Aubrey Jones

More information about the Python-list mailing list