PHPの暗号化機能

不言
不言オリジナル
2018-04-16 13:41:501631ブラウズ

この記事では主に、特定の参考値を持つ PHP の暗号化機能を紹介します。必要な友達は参考にしてください。

Web サイトの開発プロセスでは、多くの場合、いくつかのデータを分析する必要があります。この記事では、主に PHP のいくつかの一般的な暗号化関数を紹介します。必要な方は参照してください

MD5 暗号化:

string $str [, bool $raw_output = false ] )1.md5() は、デフォルトで 32 文字の 16 進数の形式でハッシュ値を返します。1 つ目は暗号化する文字列で、2 つ目は暗号化する文字列です。 raw_output 値のブール値、デフォルトは false です。 true に設定すると、md5() は元の 16 ビット バイナリ形式のメッセージ ダイジェストを返します

2.md5() は一方向暗号化であり、逆復号アルゴリズムはありません。一部の一般的な文字列は、コレクション、列挙、衝突、その他のメソッドを通じてクラッキングされます

4

5

6

7

8

9

10

11

12

13

14

15

16


りー


Crypt 暗号化:

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

1.crypt() は 2 つのパラメータを受け入れます。1 つ目は暗号化する必要がある文字列で、2 つ目はソルト値です。 (これは暗号化干渉値です。指定しない場合は、デフォルトで PHP によって自動的に生成されます); ハッシュ化された文字列または 13 文字未満の文字列が返され、後者はソルト値を区別します。
2.crypt() は 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还有多种盐值加密支持,详见手册


Sha1 暗号化:

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

1。 sha1() がデフォルトで 40 文字のハッシュ値を返すことを除いて、md5 と非常によく似ています。最初のパラメータは暗号化された文字列で、2 番目のパラメータは raw_output のブール値です。 true に設定すると、sha1() は元の 20 ビットの形式のメッセージを返します。ダイジェスト
2. sha1() も逆復号化アルゴリズムを使用しない単一行暗号化です




?

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


Urlencode 暗号化:

string urlencode ( string $str )
1. 1 つのパラメーター、暗号化する文字列を渡します (通常は URL の暗号化に使用されます)。
2. urlencode は双方向暗号化です。 urldecode を暗号化します (厳密には暗号化ではありません)。
3. この文字列内のすべての非英数字は、-_ とそれに続く 2 桁の 16 進数に置き換えられます。プラス記号 (+) としてエンコードされます。




?

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


base64 エンコードと暗号化:

string base64decode ( string $encodeddata )
1.base64_encode() は、エンコードされるデータであるパラメータを受け取ります (base64 は画像のエンコードによく使用されるため、ここでは言及しません)
2.base64encode() は双方向暗号化であり、base64decode() を復号​​化に使用できます

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


写真の例:




?

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教程

以上がPHPの暗号化機能の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。