ホームページ >バックエンド開発 >PHPチュートリアル >PHPの暗号化機能
この記事では主に、特定の参考値を持つ 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='jellybool.com'; echo crypt($password); //输出:$1$Fe0.qr5.$WOhkI4/5VPo7n7TnXHh5K /*第二个$与第三个$之间的八个字符是由PHP生成的,每刷新一次就变一次 */ echo "<hr>"; echo crypt($password,"jellybool"); //输出:je7fNiu1KNaEs /*当我们要加自定义的盐值时,如例子中的jellybool作为第二个参数直接加入, 超出两位字符的会截取前两位*/ echo "<hr>"; echo crypt($password,'$1$jellybool$'); //输出:$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() も逆復号化アルゴリズムを使用しない単一行暗号化です
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() を復号化に使用できます
4
5
7
echo base64_encode($my_intro); echo "<hr>"; /*输出:SmVsbHlCb29s5piv5LiA5Liq6Lqr5p2Q5pyJ6auY5bqmLOiCqeiGgOacieWuveW 6pizog7jogozmnInljprluqYs5oCd5oOz5pyJ5rex5bqm55qE5Zu95a625YWN5qOA5Lq UQee6p+S8mOi0qOS8quWJjeerr0lU55S35bGM5Lid */ echo base64_decode('SmVsbHlCb29s5piv5LiA5Liq6Lqr5p2Q5pyJ6auY5bqmLOiCqeiGg OacieWuveW6pizog7jogozmnInljprluqYs5oCd5oOz5pyJ5rex5bqm55qE5Zu95a6 25YWN5qOA5LqUQee6p+S8mOi0qOS8quWJjeerr0lU55S35bGM5Lid'); /*输出: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 中国語 Web サイトの他の関連記事を参照してください。