ファイルの中身を暗号化する→文字列をビット演算するには?

先週に引き続き、日経ソフトウェア2009年12月号の特別付録『かんたん10分プログラミングレシピ』から、今日は”ファイルの中身の暗号化”のPython版を検討する。
http://itpro.nikkeibp.co.jp/article/COLUMN/20060131/228211/
寝る前に30分くらいで簡単にできるかと思ったら、ハマッてしまった。己の未熟さを痛感する。
暗号化のロジックとしては、読み込んだファイルの内容をバイト列と見なして、1が連続する同じ長さのバイト列との排他的論理和をとるだけ。非常にシンプルだ。得られたバイト列をファイルに書き出して、暗号化されたファイルとする。復号するときには同じプログラムを使って、暗号化したファイルの内容を読み込んで排他的論理和をとればいい。
その付録の本文中では、PHPで実装していた。そこでは読み込んだ内容をそのままビット演算している。
Pythonでは、

inp = open(file1,'r')
str_org = inp.read()

としてファイルの内容を文字列として一気に読込む。けど、文字列はこのままだとビット演算できない。ハマった。結局、1日いろいろ考えたが答え出ず。orz