PHP写的加密函数,支持私人密钥(详细介绍) _爱资料
主页 > 编程资料 > PHP >
发布时间:2015-12-29 作者:网络 阅读:213次
在开发PHP系统时,会员部分往往是一个必不可少的模块,而密码的处理又是不得不面对的问题,PHP 的 Mcrypt 加密库又需要额外设置,很多人都是直接使用md5()函数加密,这个方法的确安全,但是因为md5是不可逆加密,无法还原密码,因此也有一些不便之处,本文介绍加密函数支持私钥,用起来还是不错的.
代码如下:
PHP:
复制代码 代码如下:
  1.  <>


  2.  <>

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

  4. // 整理:http://www.jb51.net
    <>

  5.  <>

  6. function
     keyED(
    $txt
    ,$encrypt_key
    )
       <>

  7. {
       <>

  8.     $encrypt_key
     = md5
    (
    $encrypt_key
    )
    ;   <>

  9.     $ctr
    =0
    ;   <>

  10.     $tmp
     = ""
    ;   <>

  11.     for
     (
    $i
    =0
    ;$i
    (
    $txt
    )
    ;$i
    ++)
       <>

  12.     {
       <>

  13.         if
     (
    $ctr
    ==strlen
    (
    $encrypt_key
    )
    )
     $ctr
    =0
    ;   <>

  14.         $tmp
    .= substr
    (
    $txt
    ,$i
    ,1
    )
     ^ substr
    (
    $encrypt_key
    ,$ctr
    ,1
    )
    ;   <>

  15.         $ctr
    ++;   <>

  16.     }
       <>

  17.     return
     $tmp
    ;   <>

  18. }
       <>

  19.  <>

  20. function
     encrypt(
    $txt
    ,$key
    )
       <>

  21. {
       <>

  22.     srand
    (
    (
    double)
    microtime
    (
    )
    *1000000
    )
    ;   <>

  23.     $encrypt_key
     = md5
    (
    rand
    (
    0
    ,32000
    )
    )
    ;   <>

  24.     $ctr
    =0
    ;   <>

  25.     $tmp
     = ""
    ;   <>

  26.     for
     (
    $i
    =0
    ;$i
    (
    $txt
    )
    ;$i
    ++)
       <>

  27.     {
       <>

  28.         if
     (
    $ctr
    ==strlen
    (
    $encrypt_key
    )
    )
     $ctr
    =0
    ;   <>

  29.         $tmp
    .= substr
    (
    $encrypt_key
    ,$ctr
    ,1
    )
     . (
    substr
    (
    $txt
    ,$i
    ,1
    )
     ^ substr
    (
    $encrypt_key
    ,$ctr
    ,1
    )
    )
    ;   <>

  30.         $ctr
    ++;   <>

  31.     }
       <>

  32.     return
     keyED(
    $tmp
    ,$key
    )
    ; <>

  33. }
       <>

  34.  <>

  35. function
     decrypt(
    $txt
    ,$key
    )
       <>

  36. {
       <>

  37.     $txt
     = keyED(
    $txt
    ,$key
    )
    ;   <>

  38.     $tmp
     = ""
    ;   <>

  39.     for
     (
    $i
    =0
    ;$i
    (
    $txt
    )
    ;$i
    ++)
       <>

  40.     {
       <>

  41.         $md5
     = substr
    (
    $txt
    ,$i
    ,1
    )
    ;   <>

  42.         $i
    ++;   <>

  43.         $tmp
    .= (
    substr
    (
    $txt
    ,$i
    ,1
    )
     ^ $md5
    )
    ;   <>

  44.     }
       <>

  45.     return
     $tmp
    ;   <>

  46. }
      <>

  47.  <>

  48. $key
     = "www.yitu.org"
    ;   <>

  49. $string
     = "我是加密字符"
    ;   <>

  50.  <>

  51. // encrypt $string, and store it in $enc_text  
    <>

  52. $enc_text
     = encrypt(
    $string
    ,$key
    )
    ;   <>

  53.  <>

  54. // decrypt the encrypted text $enc_text, and store it in $dec_text  
    <>

  55. $dec_text
     = decrypt(
    $enc_text
    ,$key
    )
    ;   <>

  56.  <>

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

    ;   <>

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

    ;   <>

  59. ?>
     <>

  60.  <>



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