由于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
}
上面两种简单的加密解密方法,虽然不是很强大,但用于一般性的场合足够了。非专业人士也是很难破译的。