<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
首先我們來了解一下為什麼要加密?
在網路通訊的過程中攻擊者可以偽造請求和返回,從而達到不可告人的目的。如下圖所示:
資料加密之後可以防止他人監聽竊取資訊以及通訊內容被篡改。
瞭解了加密的作用,我再來說說加密的方式:
DES是1977年美國聯邦資訊處理標準中採用的一種對稱密碼。是一種將64位元的明文加密成64位元的密文的對稱演演算法
DES已經被暴力破解了,1999年RSA公司舉辦的破譯DES比賽,耗時僅僅22小時45分鐘破譯了DES。所以不建議大家使用這種演演算法進行加密處理
AES是取代DES而成為新標準的一種對稱密碼演演算法。目前為止還未被破譯。
接下來我們用PHP來實踐一下對稱加密吧。
在使用PHP的AES加密需要使用openssl相關函數,該系列函數需要安裝openssl擴充套件。
//獲取可用的加密演演算法 $a = openssl_get_cipher_methods(); print_r($a) //AES加密解密 $data = 'wo shi aes jiami shuju';//待加密的資料 $key = uniqid();//加密的金鑰 $method = 'AES-128-CBC';//加密的方式 $iv = '1234567812345678';//初始化向量,必須是16位元字元 $a = openssl_encrypt($data,$method,$key,OPENSSL_RAW_DATA,$iv); //列印加密結果 print_r($a); //解密 $d = openssl_decrypt($a,$method,$key,OPENSSL_RAW_DATA,$iv); //解密後的資料 print_r($d);
AES加密演演算法目前雖然沒有被破解,但是也有一個問題,加密所使用的金鑰該怎麼去配送呢?如果直接寫死在前端就很容易被其他人獲取到(一次反編譯就可以獲取)。
此時就產生了RSA加密演演算法,不過RSA密碼演演算法也有缺點,運算次數多,不適合加密長文字。
明文內容最長128位元組
我們直接來看看PHP實現非對稱加密吧
//使用公鑰加密,私鑰解密 $public_key = "-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA14VJBWSyVOI4Q4aV+Cvl GX4Vb4wczPw0qQbGYAYzfuA7+RpO/X5DG7dFjdBMmb9cHvdWY8+uvKDVuHjbvCpm 3nSTgMbCLm/zDDTH8MUySSaxvm0tbdWm+L1Rinw5LZ+B1J9tHEXMwJZ2g5ZS4OZ0 4xlXx/4GWd9QBuV036er47J/cZ19WPgBDqQ4Mmm2X2na46NCeRenRBXLsaQhxvEe 5pX3WtguQtr+QrcekAmBoI1Xc0xhKDyXZ34rqZNvVCUNn11VzDcffanxlmTFFKDp QCZLVf8gtSdcxxQQrOfStgLoyYbN1e2Spb/szfQHtbSZ1qHg1frhCvjgOmZ6gDi+ OQIDAQAB -----END PUBLIC KEY-----";//公鑰 $private_key = "-----BEGIN PRIVATE KEY----- MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDXhUkFZLJU4jhD hpX4K+UZfhVvjBzM/DSpBsZgBjN+4Dv5Gk79fkMbt0WN0EyZv1we91Zjz668oNW4 eNu8KmbedJOAxsIub/MMNMfwxTJJJrG+bS1t1ab4vVGKfDktn4HUn20cRczAlnaD llLg5nTjGVfH/gZZ31AG5XTfp6vjsn9xnX1Y+AEOpDgyabZfadrjo0J5F6dEFcux pCHG8R7mlfda2C5C2v5Ctx6QCYGgjVdzTGEoPJdnfiupk29UJQ2fXVXMNx99qfGW ZMUUoOlAJktV/yC1J1zHFBCs59K2AujJhs3V7ZKlv+zN9Ae1tJnWoeDV+uEK+OA6 ZnqAOL45AgMBAAECggEAEdjMsjCjf9n31MepVZK09wZ02fbdT7A24CRaewsoaoJB FSCzl9RD1GC51sOABF9PTpUmxz8kdiRPbmY7s/pC6Hr41/odjGDi3IjmYa7CukIF CALcdzLxD7oFrZUZ2whRZP0KuQOir/QFvmHNXShYV5H6reoANqMCan/HzNmCp2ky pdtWd+YOFnvwP/m6Xw/mKWN2cFEEdME32Y9fnUq6gCpmgEQLZkEz0XQ53R9Yj6+O TpYhLzCgox5+HRL+PmE8G3XdVNOhbesmsTX4cS4s5/bWhw/iuZtlSGvNz867p0Ab jNiouWpoiLM9uHwGURndg+fslLKrBLU0fQeeXYplsQKBgQD3iEDX/Nzo19RZWz6T gf0r6S7tMtMWQr1InM8fuPxNXsT5QIuddNVp47UMs91F8K5bzGim7+0hM9SnBUsp /wKw9DRQuELziSdFGyfyo4lDiVvjqvMInph1yLfXaLdz9fxlT5+a8fUFJQqH65w2 SL+ice07mWt7ak/f1bfGKeAuVQKBgQDe5LFNtDKWLxMaO8lVTR0wWziTLImu+E3e svDIqZszyzqsLnZ4Qu6CXigrXQka8s1LRVF1kf4NQc65uutsFwitfOLitFa/h2wk 5K6Rqwl95QfkuYJpDvU4/IQ21O7HqRBt050QvBrNOfY8MCQUi3fisiP+mOkJS41Z iVRmQsfsVQKBgCjMinOPOBIg0N1RjsTdXg9IxfVOtUAsC+rV/cWqxdsyzaCPpPN0 +GAVqhfH5abLftGepXkufpVEZ76HvtXTNGxaM+1CEbb2WkSnrzPtBIjfMQgbeydm jJaNWM/mcKZqWwmP0CzHyKzqaAvzJ7JC12M9B+8U4IRdB4FLRpkg+dRpAoGAJkZz Q/qrrSqMRzb5DdLeLk2b23oMcqVlCdcEjhDB/BTsEGEyKtijiHOOxlOFmsETC9ft cxkM3U3tp+s3Pip+bPxDIdcCBoXExlkWuSD70kigIGDSyiOtbInAUoIiNtsLXTC3 igYjPBa1+AP0Tirc/WrFz5SGf/gfX767ZYwWNLkCgYBuHZrIWT0Feg5dJAkF7NMH 1Fes0Gn5sAQVvd9HVG4FAZxqJQa37M3GKD1m4ifBGtaDMgtWyVcMTdsr5hjpJB0G sEYlg3TDyd096Axr+I7KHDlIzboJjDWDwzwtqkTzgBRlxsClhqW/y/1y1o/QI9Rj CA7iK/XSPTdstVk5IPL/Aw== -----END PRIVATE KEY-----";//私鑰 $text ='我是待加密的內容'; //公鑰加密,引數二$data為加密後的內容 $res = openssl_public_encrypt($text,$encrypt,$public_key); if($res==false) echo '加密失敗'; //私鑰解密,引數一:待解密的資料 //引數二:解密後的明文內容 $res = openssl_private_decrypt($encrypt,$decrypt,$private_key); if($res==false) echo '解密失敗'; echo '解密後的明文資料:'.$decrypt
上面的程式碼就是PHP實現公鑰加密,私鑰解密的過程,我們再來看看PHP私鑰加密,公鑰解密吧
//使用公鑰加密,私鑰解密 $public_key = "公鑰"; $private_key = "私鑰"; $text = "我是待加密的內容"; //公鑰加密,引數二$data為加密後的內容 //引數三:私鑰 $res = openssl_private_encrypt($text,$encrypt,$private_key); if($res==false) echo '加密失敗'; //私鑰解密,引數一:待解密的資料 //引數二:解密後的明文內容 //引數三:公鑰 $res = openssl_public_decrypt($encrypt,$decrypt,$public_key ); if($res==false) echo '解密失敗'; echo '解密後的明文資料:'.$decrypt
注意了,前端使用公鑰或者私鑰進行加密時,一般都會將加密內容轉base64h後再傳到伺服器進行解密。伺服器在接收到資料後應該進行base64解析後再進行公鑰/私鑰進行解密。後端返回給前端時,也應該將加密後的內容轉base64格式,方便前端解析。
當然也有一些開發人員會使用urlencode進行url編碼再傳輸給前後端,大家可以根據實際需要進行轉碼
到此這篇關於PHP資料加密方式梳理介紹的文章就介紹到這了,更多相關PHP資料加密內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45