发在这里吧, 让小组的人都能看到.
最近被一段代码绕进去了, 几天没上来, jackozoo已经当上嘉宾版主了, 恭喜恭喜.
对HotPower的CRC密码, 其实大家都被其名称给误导了. 按我的理解, 其实就也就是个CFB的流加密, 每次加密的结果有部分被用于下次的加密. 看看他提供的代码:
function crc8r(crcbyte)
{
var i,temp;
crcbyte &= 0xff;//明文,它在正运算中的作用是提供跳变标志
for(i = 0; i < 8; i++){
temp = crcvalue ^ crcbyte;//记忆初值和明文移动终点D0(X0)跳变
crcvalue >>>= 1;//新D7=0,旧D0被抛弃
crcbyte >>>= 1;//新D7=0,旧D0被抛弃
if(temp & 0x01) {//测试移位前的终点D0(X0)跳变
crcvalue ^= crcval;//0x8C;//CRC=X8+X5+X4 有X8才能形成环移,故右移时,权最高位一定为'1'
//下句隐含告诉CRC逆运算此时做过XOR权的X8运算,同时满足权为任意值时保证CRC可逆,故强行环移
crcvalue |= 0x80;//权为任意值时,保证CRC权X8=1,减少1位CRC密码强度,以便实现CRC的逆运算
}
}
crcvalue &= 0xff;//输出密文
}
crcval 是固定的 Key, crcvalue 是变化的 Key, 每次 crcvalue 都会因明文而改变, 如此而已.
和 Crc 能扯上关系的只有 xor 和用来做 Key 的 poly 而已.
至于其它的天干地支, 三角函数, 无非是Key的一种传递方式, 与加密实际是无关的.
就事论事, 从学术的角度来说, 这个算法也没有大的瑕疵, 最多说有些哗众取宠而已. 从鼓励原创的角度出发, 评精华是可以的.
HotPower 的描述有些乱, jackozoo 合并时没有分好类, 反倒让整个贴子显得更乱, 难怪 HotPower 会生气; HotPower 表面上自称菜农, 实际上心理还是渴求别人的认同的, R大处处较真, 给他的感觉就是在难为他. 不过大家摊开来说清楚就没事了.
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!