Heim  >  Artikel  >  Backend-Entwicklung  >  PHP写的加密函数,支持私人密钥(详细介绍)_php技巧

PHP写的加密函数,支持私人密钥(详细介绍)_php技巧

WBOY
WBOYOriginal
2016-05-17 09:02:031176Durchsuche

在开发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.  




每一次加密后的结果是不一样的,大大加强了密码的安全性.
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn