题目是:DZ论坛的安全问题答案的密文是:582a4019,反向解译明文答案。
加密规则是:
例子為1ff2f592加密的算法仍是MD5,加密的過程是,若你安全提問選如第一個"母親的名字",
那安全提問的questionid就為1
questionid由上到下排列,其中共有7个最高,所以questionid的值為1-7,由此類推
把questionid(1-7中任选一个阿拉伯数字)加密為32位的md5 (加密的questionid是數字..可察看登錄的原始碼)
然後把結果直接加在回答答案的後面 再用md5加密
最後取其結果的第17位到第24位這8個數字 便是最後的加密結果例子:
        以(安全問題是"第二個問題"、答案是123456)為例
       把2加密後為32位的   c81e728d9d4c2f636f067f89cc14862c
       然後直接寫在回答答案的後面為 123456c81e728d9d4c2f636f067f89cc14862c
       以上再加密為32位的    46ec6c2c278daf231ff2f5929f27f605
       取以上的第17位到第24位這8個數字 便是 1ff2f592
        1ff2f592便是安全问题的密文

解决方案 »

  1.   

    还有 开券的时候,为啥不发贴啊
    被OUT了才来发,
    解决问题的激情都没有了。
      

  2.   

    MD5 是索引(摘要)不是加密,题目的描述本身就有问题
    从 MD5 码反求明文基本上是不可能的。即便你掌握了快速寻找碰撞的算法,也不能就此认定找到的就是原文
    如果真的能“反向解译明文”,那么这个“安全问题”就形同虚设了我不认为出题者会犯如此低级的错误
    我以为是楼主误解题目的含义,真正的问题是“反向解译明文答案
    据此答案号就可取出保存的答案与用户输入的答案进行比较,以验证真伪
    把questionid(1-7中任选一个阿拉伯数字)加密為32位的md5$答案 = array(1 => '', '123456', '', '', '', '', '');$密文 = '1ff2f592';
    for($i=1; $i<8; $i++) {
      $s = $答案[$i] . md5($i);
      if(substr(md5($s), 16, 8) == $密文)
        echo "答案号:$i 答案:{$答案[$i]}\n";
    }答案号:2 答案:123456
      

  3.   

    是用提问作为 key加了一次密。如果要解密,基本上是不可能的。 但你可以看discuz的加密解密函数, 那个函数是对php互联网的一大 贡献。他那是有key作为加密解密的依据的。 用的是反码+key计算。discuz的加密解密函数。是解决康盛产品同步登录的关键。
      

  4.   


    不夸张!  它提供了一种方式或思路,你的密码和验证是可以存cookie的或可以发给任何人! 但解密必须要有key才行。 而且,这个加密解密过程计算量要少。 至少,同步登录时很有意义。 否则,你敢把密码存在用户端吗?就目前的密码泄露门而言,那也是很的意义的。 即使你获得了数据库,但不知道解密的key. 一样解不了密。
      

  5.   

    老大说了,这个是不能反译的。 除了查字典。但如是说是找解决方案。 可以看discuz的的加密函数。把key设的复杂一点(如联连好几种数据)。不知道key,即使知道算法,不能解密。