repost from sci.crypt