If anybody actually sees this, let me know what you think.
''' A module for creating and decoding a simple cypher-text ''' from collections import OrderedDict cyStr = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ,.;:"\'!@#$%^&*()[]{}-?/' def rollingEncode(string, offset=0, cyString=cyStr): cyString = "".join(OrderedDict.fromkeys(cyString).keys()) ncyStr = len(cyString) if ncyStr == 0: return string anslist = [] cyPos = 0 for a in string: index = cyString.find(a) if index != -1: cyPos += index + offset while cyPos < 0: cyPos += ncyStr cyPos = cyPos % ncyStr anslist.append(cyString[cyPos]) else: anslist.append(a) return ''.join(anslist) def rollingDecode(string, offset = 0, cyString=cyStr): cyString = "".join(OrderedDict.fromkeys(cyString).keys()) ncyStr = len(cyString) if ncyStr == 0: return string anslist = [] cyPos = offset for a in string: index = cyString.find(a) if index != -1: index -= cyPos while index < 0: index += ncyStr index = index % ncyStr anslist.append(cyString[index]) cyPos += index + offset while cyPos < 0: cyPos += ncyStr cyPos = cyPos % ncyStr else: anslist.append(a) return ''.join(anslist) if __name__ == '__main__': import sys if len(sys.argv) > 1: if len(sys.argv) > 2: cypher = sys.argv[2] else: cypher = cyStr print rollingEncode(sys.argv[1], cyString=cypher) sys.exit(0) cypher = 'The quick brown fox jumped over the lazy dog.!?' a = "This is a test. WHOOOO!" offsets = [-500, -50 -5, 0, 5, 50, 500] for o in offsets: b = rollingEncode(a, o, cypher) c = rollingDecode(b, o, cypher) print "offset =", o, "cypher = '" + cypher + "'" print "a =", a print "b =", b print "c =", c print "" b = rollingEncode(a, o) c = rollingDecode(b, o) print "offset =", o, "cypher = '" + cyStr + "'" print "a =", a print "b =", b print "c =", c print ""
No comments:
Post a Comment