Ucenter密码$salt加密今天研究得出的算法

有个支持php的服务器环境是必须的了

然后看我写的代码我们来一起研究ucenter的加密算法。

研究过那么一两次的人都应该知道uc的数据库里你设置同样的密码注册得到的md5加密都不一样。

这个问题很简单就是他的密码是拼接了一个随机的字符串$salt

那么这个$salt是怎么得到的呢!

这个$salt在uc_client\model\user.php

这个文件中能找的到

那么我先把他的代码贴出来
<code>
Line 103 :  $salt = substr(uniqid(rand()), -6);
//这个就是$salt的算法
/**
*我解释一下这个会得到什么rand --将 
*产生一个随机数数的范围在没有限制的情况下是从0---32768
*uniqid()巨手册的说法《本人英语不怎么好,理解如下》
*根据当前时间返回一个独特的标识前缀,
*我想应该是类似cookies的类型是随机并且是唯一的。
*前缀最多可是114个字符串的长度。
*substr(uniqid(rand()), -6)就是把里面产生的数截取,
*截取的方法就是从后向前数6个。从第6个开始向
*后保留。给个例子
*$rest = substr("abcdef", 1);    // returns "bcdef"
*$rest = substr("abcdef",  3); // returns "bcd"
*$rest = substr("abcdef",  4); // returns "abcd"
*$rest = substr("abcdef",  8); // returns "abcdef"
*这样$salt就得到了一个6个字符的随机数。
*这个随机数就是$salt的值。
**/
Line 104 :  $password = md5(md5($password).$salt);
//把从会员注册提交的注册表单那获取的$password
//进行一次md5然后和上面的$salt拼接到一起。
//拼接完在进行一次md5
Line 107 :  $this->db->query("INSERT INTO ".UC_DBTABLEPRE."members SET $sqladd username='$username', password='$password', email='$email', regip='".$this->base->onlineip."', regdate='".$this->base->time."', salt='$salt'");
//懂数据库的这个应该一看就明白就是把获取的$salt也写进数据库了。
Line 114 :  $data = $this->db->fetch_first("SELECT username, uid, password, salt FROM ".UC_DBTABLEPRE."members WHERE username='$username'");
//查询得到对应$username 的 $salt,
//然后同样的算法进行对比。
//如果为 "T" 登陆如果为 "F"  提示密码错误.
</code>
现在用我写的代码进行$salt的测试大家看看
得到的是什么。
每次刷新就会得到不同的字符.

  1. <?php
  2. $salt = substr(uniqid(rand()), -6);
  3. for($i=0; $i<5;$i++)
  4. {
  5. echo "This is \$salt<font style='color:blue;'> $salt </font>$i<br />";

  6. }
  7. echo "<br />";
  8. print "获取密码设置用户密码为  a <br /><br />";
  9. $pass = a;
  10. $password = md5(md5($pass).$salt);
  11. for($u=0;$u<5;$u++)

  12. {
  13.         echo "This is \$pas<font style='color:blue;'> $password </font> $u<br/>";
  14. }

  15. ?>
复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值