我原来用的别人写的论坛程序
他说密码是用和动网一样的MD5加密的
我现在想用这个句子
string PwdMD5 = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(
this.txtPwd.Text,"MD5");
得到的是32位的
怎么办
怎么样吧那个16位的转换成和这个32位的一样

解决方案 »

  1.   

    32位的加密是分四组 ABCD
    16位的加密是取其中任意的两组排序+组合 (标准的是取哪两位还有顺序我没有看过动网的算法,不清楚)查以肯定的是,16位密文转换到32位,是不可能的.除非你知道原始未加密的明文,再手工转换.
      

  2.   

    补充一下,ABCD四组每一组为8 位,即8*4=32
      

  3.   

    /// <summary>
    /// 返回于md5的加密码,支持16和32位
    /// </summary>
    /// <param name="str"></param>
    /// <param name="code"></param>
    /// <returns></returns>
    public string md5(string str,int code)
    {
    if(code==16) //16位MD5加密(取32位加密的9~25字符)
    {
    return FormsAuthentication.HashPasswordForStoringInConfigFile(str,"MD5").ToLower().Substring(8,16);

    if(code==32) //32位加密
    {
    return FormsAuthentication.HashPasswordForStoringInConfigFile(str,"MD5").ToLower();
    }
        
    return "00000000000000000000000000000000";
    }
      

  4.   

    我的目的是把原来论坛数据库中的用户密码转换出来!
    比如原来数据库中有个用户名:abc 密码:ADI3K2KFJAKDJ1K3(MD5加密后的,我只能看到这个)
    现在我想换个论坛程序,目标论坛程序是把密码加密成32位的
    我应该怎么写转换程序啊
      

  5.   

    想办老用户的16位MD5转换成32位的MD5
    这是不可能的如果想通用的话,可以用其它的方法,比如老用户的密码用你旧的模块进行验证,新用户用新的模块