欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

PHP写的加密函数,支持私人密钥(详细介绍)_PHP教程

程序员文章站 2022-06-13 18:57:08
...
在开发PHP系统时,会员部分往往是一个必不可少的模块,而密码的处理又是不得不面对的问题,PHP 的 Mcrypt 加密库又需要额外设置,很多人都是直接使用md5()函数加密,这个方法的确安全,但是因为md5是不可逆加密,无法还原密码,因此也有一些不便之处,本文介绍加密函数支持私钥,用起来还是不错的.
代码如下:
PHP:
复制代码 代码如下:






  1. // 说明:PHP 写的加密函数,支持私人密钥


  2. // 整理:http://www.jb51.net




  3. function
    keyED(
    $txt
    ,$encrypt_key
    )


  4. {


  5. $encrypt_key
    = md5
    (
    $encrypt_key
    )
    ;


  6. $ctr
    =0
    ;


  7. $tmp
    = ""
    ;


  8. for
    (
    $i
    =0
    ;$i
    (
    $txt
    )
    ;$i
    ++)


  9. {


  10. if
    (
    $ctr
    ==strlen
    (
    $encrypt_key
    )
    )
    $ctr
    =0
    ;


  11. $tmp
    .= substr
    (
    $txt
    ,$i
    ,1
    )
    ^ substr
    (
    $encrypt_key
    ,$ctr
    ,1
    )
    ;


  12. $ctr
    ++;


  13. }


  14. return
    $tmp
    ;


  15. }




  16. function
    encrypt(
    $txt
    ,$key
    )


  17. {


  18. srand
    (
    (
    double)
    microtime
    (
    )
    *1000000
    )
    ;


  19. $encrypt_key
    = md5
    (
    rand
    (
    0
    ,32000
    )
    )
    ;


  20. $ctr
    =0
    ;


  21. $tmp
    = ""
    ;


  22. for
    (
    $i
    =0
    ;$i
    (
    $txt
    )
    ;$i
    ++)


  23. {


  24. if
    (
    $ctr
    ==strlen
    (
    $encrypt_key
    )
    )
    $ctr
    =0
    ;


  25. $tmp
    .= substr
    (
    $encrypt_key
    ,$ctr
    ,1
    )
    . (
    substr
    (
    $txt
    ,$i
    ,1
    )
    ^ substr
    (
    $encrypt_key
    ,$ctr
    ,1
    )
    )
    ;


  26. $ctr
    ++;


  27. }


  28. return
    keyED(
    $tmp
    ,$key
    )
    ;


  29. }




  30. function
    decrypt(
    $txt
    ,$key
    )


  31. {


  32. $txt
    = keyED(
    $txt
    ,$key
    )
    ;


  33. $tmp
    = ""
    ;


  34. for
    (
    $i
    =0
    ;$i
    (
    $txt
    )
    ;$i
    ++)


  35. {


  36. $md5
    = substr
    (
    $txt
    ,$i
    ,1
    )
    ;


  37. $i
    ++;


  38. $tmp
    .= (
    substr
    (
    $txt
    ,$i
    ,1
    )
    ^ $md5
    )
    ;


  39. }


  40. return
    $tmp
    ;


  41. }




  42. $key
    = "www.yitu.org"
    ;


  43. $string
    = "我是加密字符"
    ;




  44. // encrypt $string, and store it in $enc_text


  45. $enc_text
    = encrypt(
    $string
    ,$key
    )
    ;




  46. // decrypt the encrypted text $enc_text, and store it in $dec_text


  47. $dec_text
    = decrypt(
    $enc_text
    ,$key
    )
    ;




  48. print
    "加密的 text : $enc_text
    "

    ;


  49. print
    "解密的 text : $dec_text
    "

    ;


  50. ?>






每一次加密后的结果是不一样的,大大加强了密码的安全性.

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/327520.htmlTechArticle在开发PHP系统时,会员部分往往是一个必不可少的模块,而密码的处理又是不得不面对的问题,PHP 的 Mcrypt 加密库又需要额外设置,很多人都是直...