首页
社区
课程
招聘
[讨论]CRC算法及CRC密码之探讨
发表于: 2009-7-7 23:26 1586
申请推荐此帖 编辑 删除

[讨论]CRC算法及CRC密码之探讨

2009-7-7 23:26
1586
发在这里吧, 让小组的人都能看到.
最近被一段代码绕进去了, 几天没上来, 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大处处较真, 给他的感觉就是在难为他. 不过大家摊开来说清楚就没事了.

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
2
瞭解。
謝謝 arab 大哥的提點。
因為看見他寫 CRC 之後,我就沒去細看裏面的內容,我真以為是 CRC,他這樣的寫作習慣真的不是很好,或許他想表達 stream cipher ,卻誤以為是 CRC 吧。
既然是屬於 stream cipher 的話,我下此次撥時間仔細看。
再次謝謝 arab 大哥。^^
2009-7-8 02:08
0
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
3
我個人認為,他的算法很容易被破解,問題就出在 xor 那裏。
2009-7-8 02:35
0
游客
登录 | 注册 方可回帖
返回
//