由于tbcload是收费的,在研究如何加密自己写的Tcl代码过程中,记录如下。
一种简单的加密方法是把每个字节和另外一个字节进行异或(XOR)操作。解密时只需把密文和同一个字节再次进行异或(XOR)操作,就可以得到原文。为了加大难度,可以变换用来进行异或操作的字节。这样一来,不同位置的相同的字节加密后可以是不同的值。
下面的Tcl实现来自 http://http://wiki.tcl.tk/900
proc XORcrypt {passphrase cleartext} { set r {} binary scan $passphrase c* l binary scan $cleartext c* d set pmax [llength $l] set cn 0 foreach {c} $d { set cp [lindex $l $cn] append r [format %c [expr {($c & 0xff) ^ ($cp & 0xff)}]] incr cn if {$cn >= $pmax} { set cn 0 } } return $r }
对字节值进行rotate 操作,也是一种简单的加密办法。加密时,把每个字节加上一个特定的值;解密时,把每个字节减去同一个值。同样为了加大难度,对每个字节使用变换的字节。
下面的Tcl实现同样来自 http://http://wiki.tcl.tk/900
proc encrypt {passphrase cleartext} { set r {} binary scan $passphrase c* l binary scan $cleartext c* d set pmax [llength $l] set cn 0 foreach {c} $d { set cp [lindex $l $cn] append r [format %c [expr {($c & 0xff) + ($cp & 0xff)}]] incr cn if {$cn >= $pmax} { set cn 0 } } return $r }
上面两种简单的加密解密方法,虽然不是很强大,但用于一般性的场合足够了。非专业人士也是很难破译的。