简单的加解密方法

风行水上 @ 2010-06-07 19:34:24
标签:

由于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
 }

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

标签:

分享到:
comments powered by Disqus

26/30ms