Maison  >  Article  >  développement back-end  >  fonction de cryptage php

fonction de cryptage php

不言
不言original
2018-04-16 13:41:501579parcourir

Cet article présente principalement la fonction de cryptage de PHP, qui a une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer

Dans le processus de développement du site Web, il est souvent nécessaire de chiffrer certaines données (comme les mots de passe des utilisateurs). Cet article présente principalement plusieurs fonctions de chiffrement courantes de PHP. Les amis dans le besoin peuvent se référer à

.

Cryptage MD5 :

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

1.md5() par défaut à 32 caractères Renvoie le valeur de hachage sous forme numérique hexadécimale.Il accepte deux paramètres. Le premier est la chaîne à chiffrer et le second est la valeur booléenne de raw_output. Si la valeur par défaut est false, md5() renvoie l'original 16-. Résumé du message au format binaire bit

2.md5() est un cryptage unidirectionnel, il n'y a pas d'algorithme de décryptage inverse, mais certaines chaînes courantes peuvent toujours être déchiffrées par collection, énumération, collision, etc.




?

1

2

3

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
*/


Cryptation de la crypte :

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

1.crypt() accepte deux paramètres, le premier est la chaîne qui doit être chiffrée, et la seconde est la valeur salt (qui est la valeur d'interférence de chiffrement, si elle n'est pas fournie, elle est automatiquement générée par PHP par défaut) renvoie une chaîne hachée ou une chaîne de moins de 13 caractères) ; , ce dernier Pour distinguer la valeur du sel.
2.crypt() est un cryptage unidirectionnel, identique à 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还有多种盐值加密支持,详见手册


Cryptage Sha1 :

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

1. C'est très similaire à md5, mais la différence is sha1( ) renvoie une valeur de hachage de 40 caractères par défaut. Les paramètres transmis sont de même nature. Le premier est la chaîne cryptée et le second est la valeur booléenne de raw_output. à true, sha1() renverra le résumé du message au format original de 20 bits
2.sha1() est également un cryptage sur une seule ligne, il n'y a pas d'algorithme de décryptage inverse




?

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
//这种方式的双重加密也可以提高数据的安全性


Cryptage Urlencode :

string urlencode ( string $str )
1. Un paramètre, transmettez la chaîne à chiffrer (généralement utilisée pour chiffrer les URL), 2. Urlencode est un cryptage bidirectionnel, qui peut être crypté avec urldecode (à proprement parler, ce n'est pas un vrai cryptage)
3 Renvoie une chaîne, toutes les non-lettres de cette chaîne sauf -_. sont remplacés par un signe de pourcentage (%) suivi de deux chiffres hexadécimaux, et les espaces sont codés par un signe plus (+).




?

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
    空格 => +
  */


cryptage d'encodage base64 :

string base64decode ( string $encodeddata )
1.base64_encode() accepte un paramètre, qui est les données à encoder (la chaîne n'est pas mentionnée ici, car base64 est souvent utilisé pour encoder des images)
2.base64encode() est un cryptage bidirectionnel, et base64decode() peut être utilisé pour décrypter




?

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男屌丝
*/


Un exemple d'image :




?

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()还原就可以得到图片
*/


相关推荐:

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Tutoriel chinois phpexcelArticle suivant:Tutoriel chinois phpexcel