解决C语言与JAVA c#语言 DES 结果不一致问题
来源:互联网 发布:淘宝 收藏提升 编辑:程序博客网 时间:2024/06/04 20:11
应该会有朋友遇到从网上下载的C语言算法计算出来的结果与 JAVA C#标准库计算结果不一致,经我仔细分析结果如下:
1 网上看到的C语言DES算法可能 如:http://blog.csdn.net/kamaliang/article/details/6691653,或者http://bbs.csdn.net/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函数,(举例:0X2C ->00101100), 正好反向了,所以造成makeSubKeys结果就不一致
了。
第二个问题:
C语言中的算法:
/*置换选择2*/ int PC_2[48] = {13,16,10,23,0,4,2,27, 14,5,20,9,22,18,11,3, 25,7,15,6,26,19,12,1, 40,51,30,36,<span style="background-color: rgb(255, 0, 0);">46,54,29,39, 50,44,32,46,</span>43,48,38,55, 33,52,45,41,49,35,28,31};其中红色标注的一段数据是有问题的,标准算法的数据是
<span style="background-color: rgb(255, 0, 0);"></span><pre name="code" class="html">/*置换选择2--标准*/ int PC_2[48] = {13,16,10,23,0,4,2,27, 14,5,20,9,22,18,11,3, 25,7,15,6,26,19,12,1, 40,51,30,36,<span style="background-color: rgb(255, 0, 0);">46,54,29,39, 50,44,32,<span style="background-color: rgb(255, 255, 0);">47</span>,</span>43,48,38,55, 33,52,45,41,49,35,28,31};
以上就是C语言DES算法在c#, java中计算结果不一致的原因。
0 0
- 解决C语言与JAVA c#语言 DES 结果不一致问题
- 解决java和C语言之间DES加解密不一致的问题。
- C语言的3des、java的3des、C#的3des。三种加密遇到的问题
- java和安卓DES加密结果不一致的问题,完美解决
- Android DES加密,解决JAVA平台与android平台间加密结果不一致
- crypto-js des加密与解密 与java运行结果不一致的问题
- c语言中的问题与解决
- DES(C语言实现)
- JAVA语言DES算法
- C语言:函数声明与定义的参数不一致问题,后果可能很严重哦!!!!!
- C#与JAVA的DES加密结果一致的参数设置
- Des加解密结果不一致
- Des加解密结果不一致
- C语言与 java 学习问题!
- C语言的形参和实参个数不一致问题
- 解决iOS、Android、Java加解密不一致的问题(DES、AES)
- C语言解决随机数问题
- c语言解决汉诺塔问题
- Path Sum III
- mysql索引小知识
- codevs1008选数
- python十二天学习记录
- 【LeetCode】415 Add Strings (java实现)
- 解决C语言与JAVA c#语言 DES 结果不一致问题
- 什么是合适的健身——北漂18年(72)
- 我的virgin博客!
- Akka 实践之(三) 远程部署
- #扫疑贴#如何形象生动的解释ip地址、子网掩码、网关等概念?
- codevs1295N皇后问题
- 实体机不能访问虚拟机web服务器
- 【转载】git push 报错 remote: error: hook declined to update
- 记录工作中可能用到的——点击时间短一种事件,时间长一种事件