应该会有朋友遇到从网上下载的C语言算法计算出来的结果与 JAVA C#标准库计算结果不一致,经我仔细分析结果如下:
1 网上看到的C语言DES算法可能 如:http://blog.youkuaiyun.com/kamaliang/article/details/6691653,或者http://bbs.youkuaiyun.com/topics/391077711, 很多网页都是复制粘贴, 其实这个DES算法是有两个问题与标准算法不一致。
第一个问题:
C语言中的算法:
int
Char8ToBit64(
char
ch[8],
char
bit[64]),调用了ByteToBit函数,而这个函数会将字节转成Bit位图(举例:0X2C ->00110100)
/*字节转换成二进制*/
int ByteToBit(ElemType ch, ElemType bit[8]){
int cnt;
for(cnt = 0;cnt < 8; cnt++){
*(bit+cnt) = (ch>>cnt)&1;
}
return 0;
}
而标准算法中
ByteToBit函数ÿ