Python export-a-cryptosystems

Stephen D. Williams sdw at lig.net
Mon Jul 24 13:43:58 PDT 1995


I hadn't seen this on the list, so I'm forwarding it.

(I may have skipped it in my 'catchup on a rainy day' mail archive.)

A friend arranged a lunch today with Guido (the author of Python,
Guido van Rossum <guido at CNRI.Reston.VA.US>) and a few other friends.
I haven't formed an opinion of Python yet.

Notice that bc/dc isn't needed.

------- Forwarded Message

Date:    06 Jul 1995 14:20:13 +0000
From:    Andrew KUCHLING <fnord at maggie.cs.mcgill.ca>
To:      python-list at cwi.nl
Subject: Re: Obfuscated Python

Following modifications from Richard Jones and Guido van Rossum, we've
now achieved a 4-line RSA script.  (Shouldn't we all be doing some
*real* work, I wonder? :) ) I've added a 2-line one-time pad program,
which simply XORs the contents of the two files whose names are
provided on the command line.  Generation of random data (and securely
exchanging it with your correspondent) is left as an exercise for the
reader.

So, the Python export-a-crypto-system-sigs are:

   Try: echo 'This is a test.' | rsa.py 10001 1967cb529
#!/usr/local/bin/python -- -export-a-crypto-system-sig -RSA-in-4-lines-Python
from sys import*;from string import*;a=argv;[s,p,q]=filter(lambda x:x[:1]!=
'-',a);d='-d'in a;e,n=atol(p,16),atol(q,16);l=(len(q)+1)/2;o,inb=l-d,l-1+d
while s:s=stdin.read(inb);s and map(stdout.write,map(lambda i,b=pow(reduce(
lambda x,y:(x<<8L)+y,map(ord,s)),e,n):chr(b>>8*i&255),range(o-1,-1,-1)))

   Try: echo 'This is a test.' | rc4.py messagekey
#!/usr/local/bin/python -- -export-a-crypto-system-sig -RC4-in-4-lines-Python
from sys import*;st,x,y,i2,k,s=range(256),0,0,0,map(ord,argv[1]*256)[:256],1
for i in st[:]:i2=(k[i]+st[i]+i2)%256;st[i],st[i2]=st[i2],st[i]
while(s):s=stdin.read(1);x=(x+1)%256;y,c=(y+st[x])%256,len(s)and ord(s);(
st[x],st[y])=st[y],st[x];stdout.write(chr(c^st[(st[x]+st[y])%256])[:len(s)])

   Try: otp.py message pad >ciphertext
#!/usr/local/bin/python -- -export-a-crypto-system-sig -OTP-in-2-lines-Python
from sys import*;t=p=1;s,i,j=stdout,open(argv[1], 'r'),open(argv[2], 'r')
while(t and p):t,p=i.read(1),j.read(1);t and p and s.write(chr(ord(t)^ord(p)))

        Andrew Kuchling
        andrewk at cst.ca
        fnord at cs.mcgill.ca
               (http://www.cs.mcgill.ca/~fnord)


sdw
-- 
Stephen D. Williams 25Feb1965 VW,OH (FBI ID) sdw at lig.net http://www.lig.net/sdw
Consultant, Vienna,VA Mar95- 703-918-1491W 43392 Wayside Cir.,Ashburn, VA 22011
OO/Unix/Comm/NN       ICBM/GPS: 39 02 37N, 77 29 16W home, 38 54 04N, 77 15 56W
Pres.: Concinnous Consulting,Inc.;SDW Systems;Local Internet Gateway Co.;28May95





More information about the cypherpunks-legacy mailing list