当前位置:Gxlcms > PHP教程 > phpmd5加密的另类应用

phpmd5加密的另类应用

时间:2021-07-01 10:21:17 帮助过:36人阅读

  1. //迭代算法
  2. function md5_1_1($data, $times = 32)
  3. {
  4. //循环使用MD5
  5. for ($i = 0; $i < $times; $i++) {
  6. $data = md5($data);
  7. }
  8. return $data;
  9. }
  10. //递归算法
  11. function md5_1_2($data, $times = 32)
  12. {
  13. if ($times > 0) {
  14. $data = md5($data);
  15. $times--;
  16. return md5_1_2($data, $times); //实现递归
  17. } else {
  18. return $data;
  19. }
  20. }
  21. ?>

变换二:密文分割MD5

  1. //把密文分割成两段,每段16个字符
  2. function md5_2_1($data)
  3. {
  4. //先把密码加密成长度为32字符的密文
  5. $data = md5($data);
  6. //把密码分割成两段
  7. $left = substr($data, 0, 16);
  8. $right = substr($data, 16, 16);
  9. //分别加密后再合并
  10. $data = md5($left).md5($right);
  11. //最后把长字串再加密一次,成为32字符密文
  12. return md5($data);
  13. }
  14. //把密文分割成32段,每段1个字符
  15. function md5_2_2($data)
  16. {
  17. $data = md5($data);
  18. //循环地截取密文中的每个字符并进行加密、连接
  19. for ($i = 0; $i < 32; $i++) {
  20. $data .= md5($data{$i});
  21. }
  22. //这时$data长度为1024个字符,再进行一次MD5运算
  23. return md5($data);
  24. }
  25. ?>

  变换三:附加字符串干涉

  1. //附加字符串在原数据的尾部
  2. function md5_3_1($data, $append)
  3. {
  4. return md5($data.$append);
  5. }
  6. //附加字符串在原数据的头部
  7. function md5_3_2($data, $append)
  8. {
  9. return md5($append.$data);
  10. }
  11. //附加字符串在原数据的头尾
  12. function md5_3_3($data, $append)
  13. {
  14. return md5($append.$data.$append);
  15. }
  16. ?>

变换四:大小写变换干涉 由于PHP所提供的md5()函数返回的密文中的英文字母全部都是小写的,因此我们可以把它们全部转为大写,然后再进行一次MD5运算。

  1. function md5_4($data)
  2. {
  3. //先得到密码的密文
  4. $data = md5($data);
  5. //再把密文中的英文母全部转为大写
  6. $data = strtotime($data);
  7. //最后再进行一次MD5运算并返回
  8. return md5($data);
  9. }
  10. ?>

变换五:字符串次序干涉 把MD5运算后的密文字符串的顺序调转后,再进行一次MD5运算。

  1. function md5_5($data)
  2. {
  3. //得到数据的密文
  4. $data = md5($data);
  5. //再把密文字符串的字符顺序调转
  6. $data = strrev($data);
  7. //最后再进行一次MD5运算并返回
  8. return md5($data);
  9. }
  10. ?>

用好php md5()函数,在用户信息加密上多作些功夫,可以减少更多的安全风险。

人气教程排行