原贴见http://dev.csdn.net/develop/article/26/26215.shtm。由于我不是CSDN会员,因此在这里贴出我的反驳意见。
其实他的算法很简单,用一个随机数把一个字符串中的每个字符转换为两个字符并保存起来。由于对于每个字符处理过程都是一致的,用一个字符来解释加密、解密原理。
给定一个字符C(明文)和一个随机数J,这个随机数小于5(其实不超过7即可)。那么密文可以通过下面算法获得:
k = (C xor J ) mod 62;
m = (C xor J ) \ 62; 注意,此时C xor J = k + 62 * m
m = m * 8 + j ; 注意由于J小于等于5,因此他只占据m的低三位
此时的k和m就是加密后的密文。注意,此时明文可以通过k和m很容易的计算出来,算法如下:
J = m & 0x07 ;//获得j
m = m >> 3;
k = k + 62 * m; //加密算法中的 C xor J
C = k xor J ;
从现代加密方法要求来说,明文到密文应该计算很简单,而反过来则很困难,或者至少需要额外信息(如密匙)才能揭密,而上面这个算法从明文到密文是随机的,而密文到明文倒是简单、易行的。所以说,这个加密算法绝对不能算一个好算法。希望要加密的朋友还是去找找DES之类的算法吧。