DES中两个不同密钥加密同一明文得出相同结果,奇闻?

看代码跟解释,不要问我为什么!!嘿嘿

<?php
    #   和 hash 碰撞一样的 DES 加密碰撞?不同秘钥的同一明文的同一结果    
    $key_1 = "12345678";  
    $key_2 = "13245768";  
    $plain = "BookMoth~";  
    $encrpted = mcrypt_ecb(MCRYPT_DES,$key_1,$plain,MCRYPT_ENCRYPT);  
    // DES 用不同秘钥加密同一密文得同一明文;
    if($plain == trim(mcrypt_ecb(MCRYPT_DES,$key_1,$encrpted,MCRYPT_DECRYPT))){  
        echo "key1 works~";  
    }  
    if($plain == trim(mcrypt_ecb(MCRYPT_DES,$key_2,$encrpted,MCRYPT_DECRYPT))){  
        echo "key_1 == key_2";  
    }  
    # 不同秘钥加密同一明文得同一密文;
    echo mcrypt_ecb(MCRYPT_DES,$key_1,$plain,MCRYPT_ENCRYPT)==mcrypt_ecb(MCRYPT_DES,$key_2,$plain,MCRYPT_ENCRYPT);  
    /*
        原因是:DES 秘钥采用,每字节取前七位为有效位,第八位为奇偶校验位,所以只要每字节去前七比特位一样,秘钥就是等效的;
       就是说上面采用等效(或一样)的秘钥,所以你懂得 
     */
?> 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容