利用散列函数实现一个口令系统。    • A在B处预先存放:A的用户名,其密码的Hash值
• 当A需要向B作身份认证时,将A密码口令发给B
• B完成收到的口令Hash函数计算
• B把计算的结果与当前存储的散列值比较
 用md5散列函数,将B设置为一个字符串数组,该怎么样实现,请各位高手赐教。谢谢了。

解决方案 »

  1.   

    MD5_CTX md5T; 
    u_char digest[16];/*计算好的结果*/ 
    md5T.MD5Update(buf/*需要进行计算的内容*/, len/*长度*/); 
    md5T.MD5Final(digest); 
      

  2.   

    你这就是一个简单的用户密码加密,预先存放的是密码的Hash值,每次比较时都将密码和hash值进行比较,因为md5的值不能回溯。
    md5的加密代码网上多的是。
      

  3.   

    A:
      szHash = hash(Password);
      send(szHash);B:
      szHash = recv(szHash);
      RealHash = hash(RealPassword);
      compare(szHash, RealHash ) 这里就是判断密码是否正确MD5 hash算法代码网上有下载
      

  4.   

    见http://topic.csdn.net/u/20080726/12/6d861246-7d68-4b6c-9508-a810ac75f414.html
      

  5.   

    有密码原文的一方hash密码后发送有密码hash的一方接收后比对这是基本的对称加密
      

  6.   


    顺便问一下,得到了原文的hash之后,如果接收方只对hash比对,那在接收方不是等于就有了通过的权限了吗
    这样的机制只能保证接收方不知道明文,那么接收方可以得到hash啊,不等于得到密码了吗
      

  7.   

    实际应用是:密码只是参与hash运算的一个部分,比如你可以用一个时间值+密码的hash,然后再hash,传送这个系统时间值和再hash的值
      

  8.   

    所以通过网络传输的密码等敏感信息,最好采用类似于RSA之类的加密算法,并通过动态协商密钥进行加密.