使用了四个从网络上下载的工具及Java自带的DES包,使用同样的密钥对同样的字符串加密竟然得到了5种不同的结果。我的天啊!我实在是非常的愤怒,难道我对DES的认识不对?我理解的DES算法应该是:密钥是8个字节共64位
明文应被切分成每8个字节(64位)一小段,每8个字节(64位)进行一次DES加密后得到8个字节(64位)的密文我用于测试的密钥是:liuqiang  8个ASCII字符
我用于测试的明文是:liuqiang  8个ASCII字符第一个工具的结果:
B6 B1 03 AB A9 25 5F 9F第二个工具的结果:
B2 66 AC 8E AC 03 E5 B2第三个工具的结果:
8E 1E 07 79 B0 CF 46 A8第四个工具的结果:
这个我也不知道,因为这算法用15个字节表示密钥,让我很困惑Java结果:
Java加密后的密文是16个字节 - -
因为我对Java不熟悉,所以可能有其他错误哪位高人给我个解释!!!!!!!

解决方案 »

  1.   

    Java版
    D8 4A D1 95 28 F9 4A 35 ED 2B 41 EF C9 BE 18 49
      

  2.   

    查了一些资料,发现Java采取的填充方法很特别。请问DES算法是否只有唯一的一种?我知道有3重DES,但我想知道是否像MD5一样,对同一数据用同一密钥加密的结果是否一定相同?DES在填充上是否有多种方式?
      

  3.   

    正确结果是 8E 1E 07 79 B0 CF 46 A8 
      

  4.   

    都是DES算法,但是也可能是算法模式不同(有ECB,CBC两种算法模式),还有可能填充的模式不同(有三种,不过你的明文明确是8位了,这个可能性不大),最终造成结果不同。网上应该有DES的校验工具,你找一个来测试一下看看。另外建议你看看使用上会不会有什么参数可能类型上不合适的。