Heim > Backend-Entwicklung > PHP-Tutorial > PHP-Verschlüsselungsfunktion

PHP-Verschlüsselungsfunktion

不言
Freigeben: 2023-03-23 22:46:01
Original
1651 Leute haben es durchsucht

In diesem Artikel wird hauptsächlich die Verschlüsselungsfunktion von PHP vorgestellt, die jetzt mit allen geteilt werden kann. Freunde in Not können sich darauf beziehen

Im Entwicklungsprozess der Website. Es ist häufig erforderlich, einige Daten zu verschlüsseln (z. B. Benutzerkennwörter). In diesem Artikel werden hauptsächlich einige gängige Verschlüsselungsfunktionen von PHP vorgestellt

MD5-Verschlüsselung:

string md5 ( string $str [, bool $raw_output = false ] )

1.md5() hat standardmäßig 32 Zeichen. Gibt die zurück Hash-Wert in hexadezimaler digitaler Form. Der erste ist der zu verschlüsselnde String und der zweite ist der boolesche Wert von raw_output. Wenn er auf true gesetzt ist, gibt md5() den ursprünglichen Wert zurück. Bit-Binärformat-Nachrichtendigest 2.md5() ist eine Einwegverschlüsselung, es gibt keinen umgekehrten Entschlüsselungsalgorithmus, aber einige gängige Zeichenfolgen können dennoch durch Sammlung, Aufzählung, Kollision usw. geknackt werden.



?


1

23

4

5

6

7

8

9

10

11

12

13

14

15

16


<?php
$username=&#39;jellybool&#39;;
$password=&#39;jellybool.com&#39;;
/*简单地对字符串进行md5加密*/
echo md5($username);
echo "<hr>";
echo md5($password);
echo "<hr>";
/*更推荐的做法是对重要的敏感数据进行多次加密,以防被轻易破解*/
echo md5(md5($password));
 
/*以上输出:
  username:4f5436e5d72608fb647b691e8edcf42e
  password:7bf02cf0f4af6da4accbc73d2a175476
  password(两次加密):864704bb35754f8cd0232cba6b91521b
*/
Nach dem Login kopieren


Crypt-Verschlüsselung:

string crypt ( string $str [, string $salt ] )

1.crypt() akzeptiert zwei Parameter, der erste ist die Zeichenfolge, die verschlüsselt werden muss, und die zweite ist der Salt-Wert (der der Verschlüsselungsinterferenzwert ist; wenn er nicht angegeben wird, wird er standardmäßig automatisch von PHP generiert); , letzteres Zur Unterscheidung des Salzwertes.
2.crypt() ist eine Einwegverschlüsselung, genau wie md5.




?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20


<?php
$password=&#39;jellybool.com&#39;;
echo crypt($password);
//输出:$1$Fe0.qr5.$WOhkI4/5VPo7n7TnXHh5K
/*第二个$与第三个$之间的八个字符是由PHP生成的,每刷新一次就变一次
*/
echo "<hr>";
echo crypt($password,"jellybool");
//输出:je7fNiu1KNaEs
/*当我们要加自定义的盐值时,如例子中的jellybool作为第二个参数直接加入,
超出两位字符的会截取前两位*/
echo "<hr>";
echo crypt($password,&#39;$1$jellybool$&#39;);
//输出:$1$jellyboo$DxH7wF7SygRpWb6XBBgfH/
/* crypt加密函数有多种盐值加密支持,以上例子展示的是MD5散列作为盐值,该方式下
盐值以$1$$的形式加入,如例子中的jellybool加在后两个$符之间,
超出八位字符的会截取前八位,总长为12位;crypt默认就是这种形式。
*/
echo "<hr>";
//crypt还有多种盐值加密支持,详见手册
Nach dem Login kopieren


Sha1-Verschlüsselung:

string sha1 ( string $str [, bool $raw_output = false ]

1. Es ist MD5 sehr ähnlich, aber der Unterschied is sha1( ) gibt standardmäßig einen 40-stelligen Hash-Wert zurück. Der erste ist der verschlüsselte String und der zweite ist der boolesche Wert von raw_output auf true, sha1() wird den ursprünglichen 20-Bit-Nachrichtenauszug im Originalformat zurückgeben
2.sha1() ist ebenfalls einzeilige Verschlüsselung, es gibt keinen umgekehrten Entschlüsselungsalgorithmus




?

1

2

3

4

5

6

7

8

9


<?php
$my_intro="jellybool";
echo sha1($my_intro);
//输出:c98885c04c1208fd4d0b1dadd3bd2a9ff4d042ca
echo "<hr>";
//当然,可以将多种加密算法混合使用
echo md5(sha1($my_intro));
//输出:94f25bf9214f88b1ef065a3f9b5d9874
//这种方式的双重加密也可以提高数据的安全性
Nach dem Login kopieren


Urlencode-Verschlüsselung:

string urlencode ( string $str )
1. Ein Parameter, übergeben Sie den zu verschlüsselnden String (wird normalerweise zum Verschlüsseln von URLs verwendet),
2. Urlencode ist eine Zwei-Wege-Verschlüsselung, die mit Urldecode verschlüsselt werden kann (streng genommen handelt es sich nicht um eine echte Verschlüsselung)
3 Gibt eine Zeichenfolge zurück, alle Nicht-Buchstaben in dieser Zeichenfolge außer -_ werden durch ein Prozentzeichen (%) gefolgt von zwei hexadezimalen Ziffern ersetzt und Leerzeichen werden durch ein Pluszeichen (+) kodiert.




?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43


<?php
  //urlencode()通常用于URL中明文数据的隐藏
  $my_urlencode="jellybool.com?jellybool=true + 4-3%5= \& @!";
  echo urlencode($my_urlencode);
  //输出:jellybool.com%3Fjellybool%3Dtrue+%2B+4-3%255%3D+%5C%26+%40%21
  echo "<hr>";
  $my_urldecode="jellybool.com%3Fjellybool%3Dtrue+%2B+4-3%255%3D+%5C%26+%40%21";
  echo urldecode($my_urldecode);
  //输出:jellybool.com?jellybool=true + 4-3%5= \& @! 
  //还原了$my_urlencode的输出
  echo "<hr>";
  $my_urldecode="http://www.baidu.com/s?word=jellybool+%E8%A7%89%E7%B4%AF%E4%B8%8D%E7%88%B1&tn=98236947_hao_pg&ie=utf-8";
  echo urldecode($my_urldecode);
  /*输出:http://www.baidu.com/s?word=jellybool 觉累不爱&tn=98236947_hao_pg&ie=utf-8
  没错,这就是在百度搜索jellybool 觉累不爱
  */
 
  /*
  =========================================================================
  解决第二个经典问题
  =========================================================================
  */
  $pre_url_encode="jellybool.com?username=jellybool&password=jelly";
  //在实际开发中,我们很多时候要构造这种URL,这是没有问题的
  $url_decode  ="jellybool.com?username=jelly&bool&password=jelly";
  /*注意上面两个变量的差别:第一个的username=jellybool,
              第二个为username=jelly&bool
  这种情况下用$_GET()来接受是会出问题的,这是可以用下面的方法解决 
  */
  $username="jelly&bool";
  $url_decode  ="jellybool.com?username=".urlencode($username)."&password=jelly";
  //这是可以很好的解决问题
 
  /*
  总结一下常见的urlencode()的转换字符
    ?=> %3F
    = => %3D
    % => %25
    & => %26
    \ => %5C
    + => %2B
    空格 => +
  */
Nach dem Login kopieren


Base64-Kodierung Verschlüsselung:

String base64decode ( string $encodeddata )
1.base64_encode() akzeptiert einen Parameter, bei dem es sich um die zu kodierenden Daten handelt (String wird nicht erwähnt). hier, da Base64 häufig zum Kodieren von Bildern verwendet wird)
2.base64encode() ist eine bidirektionale Verschlüsselung, und base64decode() kann zum Entschlüsseln von


< verwendet werden 🎜>


?

1

2

3

4

5

6

7

8

9

10

11

12

13


echo base64_encode($my_intro);
echo "<hr>";
/*输出:SmVsbHlCb29s5piv5LiA5Liq6Lqr5p2Q5pyJ6auY5bqmLOiCqeiGgOacieWuveW
6pizog7jogozmnInljprluqYs5oCd5oOz5pyJ5rex5bqm55qE5Zu95a625YWN5qOA5Lq
UQee6p+S8mOi0qOS8quWJjeerr0lU55S35bGM5Lid
*/
echo base64_decode(&#39;SmVsbHlCb29s5piv5LiA5Liq6Lqr5p2Q5pyJ6auY5bqmLOiCqeiGg
OacieWuveW6pizog7jogozmnInljprluqYs5oCd5oOz5pyJ5rex5bqm55qE5Zu95a6
25YWN5qOA5LqUQee6p+S8mOi0qOS8quWJjeerr0lU55S35bGM5Lid&#39;);
 
/*输出:JellyBool是一个身材有高度,肩膀有宽度,胸肌有厚度,思想有深度的国家免检五A
级优质伪前端IT男屌丝
*/
Nach dem Login kopieren


Ein Beispiel für ein Bild:




?

1

2

3

4

5

6

7

8

9

10

11


<?php
/*
一个图片的应用例子
*/
$filename="https://worktile.com/img/index/index_video.png";
 
$data=file_get_contents($filename);
echo base64_encode($data);
/*然后你查看网页源码就会得到一大串base64的字符串,
再用base64_decode()还原就可以得到图片
*/
Nach dem Login kopieren


相关推荐:

探究PHP的函数运行机制_PHP教程

Das obige ist der detaillierte Inhalt vonPHP-Verschlüsselungsfunktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage