Posted to tcl by patthoyts at Mon Feb 26 23:43:52 GMT 2007view pretty
# Requires some reliable and secret method to exchange the secret. package require blowfish package require base64 package require md5 proc CreateKey {secret} { return [blowfish::Init cbc $secret [string repeat \0 8]] } proc Enc {key data} { # shoud be the best random data you can get. set iv [string range [md5::md5 [clock clicks]:[pid]:[expr {rand()}]] 0 7] blowfish::Reset $key $iv set c [blowfish::Encrypt $key $data] return [base64::encode $iv$c] } proc Dec {key pkt} { set data [base64::decode $pkt] set iv [string range $data 0 7] set data [string range $data 8 end] blowfish::Reset $key $iv return [blowfish::Decrypt $key $data] }