设S1和S分别为两个串
  S1=MD5(S+S1)MD5为MD5加密算法。。,现在请大家谈谈看,如果S已知,能否得到S1是多少?

解决方案 »

  1.   

    S1=MD5(S+S1)
    这个等号怎么能连得起来呢?
    S+S1经过编码之后肯定不等于S1
      

  2.   

    1、MD5算法是对输入的数据进行补位,使得如果数据位长度LEN对512求余的结果是448。
    即数据扩展至K*512+448位。即K*64+56个字节,K为整数。
    具体补位操作:补一个1,然后补0至满足上述要求2、补数据长度:
    用一个64位的数字表示数据的原始长度B,把B用两个32位数表示。这时,数据就被填
    补成长度为512位的倍数。3. 初始化MD5参数
    四个32位整数 (A,B,C,D) 用来计算信息摘要,初始化使用的是十六进制表示的数字A=0X01234567
    B=0X89abcdef
    C=0Xfedcba98
    D=0X765432104、处理位操作函数X,Y,Z为32位整数。
    F(X,Y,Z) = X&Y|NOT(X)&Z
    G(X,Y,Z) = X&Z|Y&not(Z)
    H(X,Y,Z) = X xor Y xor Z
    I(X,Y,Z) = Y xor (X|not(Z))5、主要变换过程:
    使用常数组T[1 ... 64], T[i]为32位整数用16进制表示,数据用16个32位的整
    数数组M[]表示。
      

  3.   

    根据以上对MD5的描述,其过程为不可逆过程,由S不能推出S1. 
    关注
      

  4.   

    darkliu(钢铁工人甲) ,
    呵~~,,谢谢指教。
      

  5.   

    其实提出这个想法是源于对文件保护的考虑现在网上发布一个程序或者压缩包,
    采用把MD5贴在外面,再给出一个链接下载,如果这个MD5串本身就在文件内部,
    那么程序运行时就可以自己来检测自己了,呵呵,可能是悖论。。