DES算法具有极高的安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。而56位长的密钥的穷举空间为256,这意味着如果一台计算机的速度是每一秒钟检测一百万个密钥,则它搜索完全部密钥就需要将近2285年的时间,可见,这是难以实现的。当然,随着科学技术的发展,当出现超高速计算机后,我们可考虑把DES密钥的长度再增长一些,以此来达到更高的保密程度。
    由上述DES算法介绍我们可以看到:DES算法中只用到64位密钥中的其中56位,而第8、16 、24、......64位8个位并未参与DES运算,这一点,向我们提出了一个应用上的要求,即DES的安全性是基于除了8,16,24,......64位外的其余56位的组合变化256才得以保证的。因此,在实际应用中,我们应避开使用第8,16,24......64位作为DES密钥的
有效数据位,而使用其它的56位作为有效数据位,才能保证DES算法安全可靠地发挥作用。如果不了解这一点,把密钥Ke y的8,16,24,.......64位作为有效数据位使用,将不能保证DES加密数据的安全性,对运用DES 来达到保密作用的系统产生数据被破译的危险,这正是DES算法在应用上的误区,是各级技术人员、各级领导在使用过程中应绝对避免的。而当今国内各金融部门及非金融部门,在运用DES工作,掌握DES工作密钥Key的领导、主管们,极易忽略,给使用中貌似安全的系统,留下了被人攻击、被人破译的极大隐患。

    DES算法应用误区的验证数据
    用Turbo C编写了DES算法程序,并在PC机上对上述的DES算法的应用误区进行了验证,其验证数据如下:
    Key:  0x30 0x30 0x30 0x30......0x30(8个字节)
    Data: 0x31 0x31 0x31 0x31......0x31(8个字节)
    Mode: Encryption
    结果:65 5e a6 28 cf 62 58 5f
    如果把上述的Key换为8个字节的0x31,而Data和Mode均不变,则执行DES后得到的密文完全一样。类似地,用Key:8个0x32和用Key:8个0x33去加密Data(8个0x31),二者的图文输出也是相同的:5e c3 ac e9 53 71 3b ba
    可以得到出结论:
    Key 用0x30与用0x31是一样的;
    Key 用0x32与用0x33是一样的,......
    当Key由8个0x30换成8个0x31后,貌似换成了新的Key,但由于0x30和0x31仅仅是在第8,1 6,24......64有变化,而DES算法并不使用Key的第8,16,......64位作为Key的有效数据位,故:加密出的结果是一样的。
    DES解密的验证数据:
    Key:  0x31  0x31......0x31(8个0x31)
    Data: 65 5e a6 28 cf 62 58 5f
    Mode: Decryption
    结果:0x31  0x31......0x31(8个0x31)
    由以上看出:DES算法加密与解密均工作正确。唯一需要避免的是:在应用中,避开使用K ey的第8,16......64位作为有效数据位,从而便避开了DES算法在应用中的误区。
    避开DES算法应用误区的具体操作:
    在DES密钥Key的使用、管理及密钥更换的过程中,应绝对避开DES算法的应用误区,即:绝对不能把Key的第8,16,24......64位作为有效数据位,来对Key进行管理。这一点,特别推荐给金融银行界及非金融业界的领导及决策者们,尤其是负责管理密钥的人,要对此点予以高度重视。有的银行金融交易网络,利用定期更换DES密钥Key的办法来进一步提高系统的安全性和可靠性,如果忽略了上述应用误区,那么,更换新密钥将是徒劳的,对金融交易网络的安全运行将是十分危险的,所以更换密钥一定要保证新Key与旧Key真正的不同,即除了第8,16,24,…64位以外其它位数据发生了变化,请务必对此保持高度重视!