php中常用的加密方式

一、md5

要說php中的最常用的加密方式,md5可以說是當仁不讓。

使用起來也很簡單便捷。

注:使用方式請看? 六、md5加密方式的漏洞及解決方案

?

二、password_hash

作為php5.5以上版本專門用于加密的方式,自然有其獨到之處。

使用方式鏈接:https://blog.csdn.net/m_nanle_xiaobudiu/article/details/79285125

php官方說明鏈接:http://www.php.net/manual/zh/function.password-hash.php

優點:安全性極高

缺點:php專有函數,不能在其他語言上進行驗證。

?

三、sha1

和md5作用類似,加密方式也類似,相當于md5的加強版吧,據說是比md5稍微安全一點

簡單使用:

<?php
$str = "45456mkmk&&@#$544564";
$str = sha1($str);
echo $str;//80079e03d65a4ba2314ddca239e7ee08ee50bd2d

?

四、openssl_encrypt(推薦)

作為被廢棄的mycrypt加密方式的替代,openssl_encrypt自然有很大改進。條件允許,這款加密方式也比較安全方便,破解起來非常困難。

簡單的使用:

<?php
$str = 'mmmo56451212158ss0';
$openssl_key = '4541&&#886@66';
$en_method = 'AES-256-ECB';
//get_openssl_cipher_methods();//獲取openssl_encrypt的加密方式列表//openssl_encrypt加密
$str_en = openssl_encrypt($str,$en_method,$openssl_key);
echo $str_en;//R8ZhAYeGBIO2FUVgRj1lD9bHjA3BjSRXDboVC83eXc0=
echo "<hr>";//openssl_decrypt解密
$str_de = openssl_decrypt('R8ZhAYeGBIO2FUVgRj1lD9bHjA3BjSRXDboVC83eXc0=',$en_method,$openssl_key);
echo $str_de;//mmmo56451212158ss0/*** 獲取openssl_encrypt method* 就是openssl_encrypt的第二個參數*/
function get_openssl_cipher_methods()
{$ciphers = openssl_get_cipher_methods();echo "<pre>";print_r($ciphers);echo "</pre>";
}

?

五、base64_encode

使用場景:加密url,傳輸二進制數據(如郵件主題以及圖片等),加密cookie,生成密鑰,證書等。

這里以加密圖片(對圖片進行編碼)為例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title>
</head>
<body><?php//對圖片進行64位編碼$img_en =  base64_encode(file_get_contents('./233.jpg'));//注:編碼后,會生成一串字符串,將此生成的字符串填入img的標簽里即可,如下?><!--html顯示編碼后的圖片-->
<img src="https://img-blog.csdnimg.cn/2022010703450235671.png"></body>
</html>更多關于base64_encode使用方式: https://blog.csdn.net/u011250882/article/details/49679555

?

六、md5加密方式的漏洞及解決方案

代碼:

<?php
$str1 = 's878926199a';
$str2 = 's214587387a';
//echo md5($str1);//0e545993274517709034328855841020
//echo md5($str2);//0e848240448830537924465865611904if (md5($str1) == md5($str2)) {echo 'true';
} else {echo 'false';
}

理論上,上面的代碼應該返回false,但實際上卻返回了true,這就造成了md5加密方式的漏洞。

原因:

PHP在處理哈希字符串時,會利用”!=”或”==”來對哈希值進行比較,它把每一個以”0E”開頭的哈希值都解釋為0,所以如果兩個不同的密碼經過哈希以后,其哈希值都是以”0E”開頭的,那么PHP將會認為他們相同,都是0。

解決方案:

(1)在用md5進行加密時,至少要將md5加密兩次以上(包含兩次),或者再加上鹽進行加密。如下:

<?php
$str1 = 's878926199a';
$str2 = 's214587387a';
$key = '6655&&skks@';//雙重md5加密方式
//echo md5(md5($str1))."<br>";//b91d1a7e392c6041ae80b5c6c74a1d83
//echo md5(md5($str2));//31e723c4b5c80632064006c430236731//md5加鹽加密方式
//echo md5($str1.$key)."<br>";//ade1b1ba6d7858ca5581268765184c81
//echo md5($str2.$key);//36ef02a862366d6dc53c1aa835eadf87//雙重md5加鹽加密方式
//echo md5(md5($str1.$key))."<br>";//bcc445ad0e2f0d5bc8d57185ea2b9184
//echo md5(md5($str2.$key));//90a5e5be9dd2176a63faa28e623dfdb3

(2)使用其他加密方式,比如password_hash,openssl_encrypt

?

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/282248.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/282248.shtml
英文地址,請注明出處:http://en.pswp.cn/news/282248.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

解決問題的策略-分而治之

一個宏偉的目標看上去遙不可及&#xff0c;這怎么可能做成呢&#xff1f;但是你把這些目標分解成一個一個的小目標&#xff0c;小目標再往下分解&#xff0c;分解到最后&#xff0c;分解成細枝末節時你會發現&#xff0c;這事其實是可以做的。這個做成了再往下走一步&#xff0…

UITabBarController的基本原理及使用(一)

前言 UITabBarController在iOS開發中是一個高頻使用的控制器&#xff0c;典型的案例如QQ、微信均使用UITabBarController布局。本文將從一個新建工程&#xff0c;和大家一起了解UITabBarController的基本原理和使用方法。 基本概念 UITabBarController能夠方便地管理多個控制器…

word-vba-microsoft(中英文)

中文 https://msdn.microsoft.com/zh-cn/vba/word-vba/articles/view-displaypageboundaries-property-word 英文 https://msdn.microsoft.com/en-us/vba/word-vba/articles/view-displaypageboundaries-property-word轉載于:https://www.cnblogs.com/itzxy/p/7625915.html

C# 多線程ThreadPool用法舉例

概述ThreadPool是.Net Framework 2.0版本中出現的。自從Task出來以后&#xff0c;ThreadPool已經很少用了&#xff0c;但是一些老的代碼或者一些古老的程序猿還是會用到他&#xff0c;所以我們可以不用它&#xff0c;但是還是有必須學習和了解他.ThreadPool用法舉例static void…

Mysql實現主從復制(一主雙從)

一、環境介紹 LNMP&#xff08;centos7&#xff0c;mysql5.6&#xff09; vmware workstation pro配置了3個虛擬機&#xff0c;均安裝了LNMP環境&#xff1a; master&#xff1a; 192.168.0.105 slave&#xff1a; 192.168.0.106 、192.168.0.107 二、原理 &a…

Elasticsearch學習筆記-04.3批處理

除了創建、更新和刪除個別文檔&#xff0c;Elasticsearch還提供了使用_bulk API的上述操作的批量操作方法。這個功能很重要&#xff0c;因為他提供了一種有效的機制來在盡可能少的網絡傳輸過程中執行多次操作。 作為一個快速示例&#xff0c;下面的命令在一次批量操作中索引了兩…

接口文檔神器Swagger(下篇)

本文來自網易云社區作者&#xff1a;李哲二、Swagger-springmvc原理解析上面介紹了如何將springmvc和springboot與swagger結合&#xff0c;通過簡單配置生成接口文檔&#xff0c;以及介紹了swagger提供的一些注解。下面將介紹swagger是如何做到與springmvc結合&#xff0c;自動…

php實現mysql分表

一、場景說明 1、為什么要進行分表 隨著數據量的不斷增大&#xff0c;一張表中的數據肯定也會越來越多&#xff0c;甚至達到百萬甚至千萬級。我們通常會通過搭建mysql集群&#xff08;主從同步&#xff09;&#xff0c;讀寫分離來實現優化數據庫查詢執行效率。 但是由于數據…

利用python進行數據分析D1——ch02引言

基礎的課程還沒學完&#xff0c;就來這本了&#xff0c;因為我平時的研究還是以數據的處理為主。把自己的事做好做細致讀了一下介紹部分&#xff0c;下載書里用到的數據&#xff0c;下載地址&#xff1a;https://github.com/wesm/pydata-book 如果你需要完成以下幾大類任務&…

記一次Memory Leak分析

起因&#xff1a;最近公司的一個web產品遇到了內存溢出&#xff0c;于是開始著手調查。調查&#xff1a;首先當務之急是找到那個或那些API導致Memory Leak&#xff0c;這個應該不難&#xff0c;根據監控分析&#xff0c;在內存上升時間段內有哪些API被訪問&#xff0c;再就是根…

【t057】任務分配

Time Limit: 1 second Memory Limit: 128 MB 【問題描述】 現有n個任務,要交給A和B完成。每個任務給A或給B完成&#xff0c;所需的時間分別為ai和bi。問他們完成所有的任務至少要多少時間。 【輸入格式】 第一行一個正整數n&#xff0c;表示有n個任務。 接下來有n行&#xf…

LeetCode 366. Find Leaves of Binary Tree

實質就是求每個節點的最大深度。用一個hash表記錄&#xff0c;最后輸出。 class Solution { public:unordered_map<TreeNode *,int> hash; // record the level from bottomvector<vector<int>> findLeaves(TreeNode* root) {vector<vector<int>>…

C#比較對象的相等性

對于相等的機制全部不同&#xff0c;這取決于比較的是引用類型還是值類型。以下分別介紹引用類型和值類型的相等性。1.比較引用類型的相等性 System.Object定義了三種不同的方法&#xff0c;來比較對象的相等性&#xff1a;ReferenceEquals()和兩個版本號的Equals()。再加上比較…

WebSocket教程

一、為什么需要 WebSocket&#xff1f; 初次接觸 WebSocket 的人&#xff0c;都會問同樣的問題&#xff1a;我們已經有了 HTTP 協議&#xff0c;為什么還需要另一個協議&#xff1f;它能帶來什么好處&#xff1f; 答案很簡單&#xff0c;因為 HTTP 協議有一個缺陷&#xff1a…

C# WPF十個美觀的界面設計展示

概述很多時候&#xff0c;我們設計的界面總是感覺缺乏美感&#xff0c;不是我們不會開發好看的界面&#xff0c;而是不知道怎么才算美觀&#xff0c;這時候我們不妨看看別人好的頁面是怎么做的.下面展示一些我覺得做的比較好的cs界面&#xff0c;希望能給大家在平時做界面設計時…

BZOJ3172: [Tjoi2013]單詞

【傳送門&#xff1a;BZOJ3172】 簡要題意&#xff1a; 給出n個單詞&#xff0c;你可以理解為將這些單詞變成一個個段落&#xff0c;然后求出每個單詞在所有段落中出現的次數 題解&#xff08;一&#xff09;&#xff1a; 剛開始不是很懂題目&#xff0c;結果發現將所有單詞看成…

MySQL5.6二進制軟件包編譯安裝詳解(三)

一、軟件環境 [rootlocalhost ~]# uname -r 3.10.0-862.el7.x86_64 [rootlocalhost ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) 二、安裝部署過程詳解 MySQL安裝3種方式&#xff1a;1>rpm包安裝應用文件默認安裝在/usr/local 目錄下2>源碼編譯需…

Java反射學習總結五(Annotation(注解)-基礎篇)

Annotation(注解)簡單介紹&#xff1a; 注解大家印象最深刻的可能就是JUnit做單元測試,和各種框架里的使用了。本文主要簡介一下注解的用法&#xff0c;下篇文章再深入的研究。 annotation并不直接影響代碼語義。可是它可以被看作類似程序的工具或者類庫。它會反過來對正在執行…

使用autok3s 安裝k3s 集群 和 kuboard 管理集群

一、k3s介紹1.1 什么是k3s?k3s 是經過 CNCF 認證的由 Rancher 公司開發維護的一個輕量級的 Kubernetes 發行版&#xff0c;內核機制還是和 k8s 一樣&#xff0c;但是剔除了很多外部依賴以及 K8s 的 alpha、beta 特性&#xff0c;同時改變了部署方式和運行方式&#xff0c;目的…

Nginx—— Rewrite規則的使用

一、使用場景 1、URL訪問跳轉 &#xff08;1&#xff09;頁面跳轉 &#xff08;2&#xff09;兼容性支持&#xff08;比如新老版本交替時&#xff0c;給老版本一條訪問道路&#xff09; &#xff08;3&#xff09;展示效果&#xff08;比如縮短前臺界面的地址欄的url&#…