一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - PHP內置加密函數詳解

PHP內置加密函數詳解

2021-03-28 21:47PHP教程網 PHP教程

在網站的開發過程中,常常需要對部分數據(如用戶密碼)進行加密,本文主要介紹PHP的幾個常見的加密函數

Md5()加密算法

方式: 單向加密

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

$str:原始字符串

$raw_output:如果可選的raw_output被設置為true, 那么md5報文摘要將以16字節長度的原始二進制格式返回. 返回以32位字符十六進制數字形式返回散列值

md5二次加密:md5(md5($string, true))

Crypt()加密算法

方式: 單向加密

語法: string crypt(string $str[, string $salt]) , 返回一個基于標準UNIX DES算法或系統上其它可用的替代算法的三列字符串

$str: 需要加密的明文

$salt: 加密時的干擾串,是編碼更安全

注意: 如果加密時沒有加上這個$salt參數, 將隨機生成一個干擾串, 否則刷新加密秘文不變

算法常量:

[CRYPT_SALT_LENGTH]

默認的加密長度。使用標準的 DES 加密,長度為 2

[CRYPT_STD_DES]

基于標準 DES 算法的散列使用 "./0-9A-Za-z" 字符中的兩個字符作為鹽值。在鹽值中使用非法的字符將導致 crypt() 失敗。

[CRYPT_EXT_DES]

擴展的基于 DES 算法的散列。其鹽值為 9 個字符的字符串,由 1 個下劃線后面跟著 4 字節循環次數和 4 字節鹽值組成。它們被編碼成可打印字符,每個字符 6 位,有效位最少的優先。0 到 63 被編碼為 "./0-9A-Za-z"。在鹽值中使用非法的字符將導致 crypt() 失敗。

[CRYPT_MD5]

MD5 散列使用一個以 $1$ 開始的 12 字符的字符串鹽值。

[CRYPT_BLOWFISH]

Blowfish 算法使用如下鹽值:“$2a$”,一個兩位 cost 參數,“$” 以及 64 位由 “./0-9A-Za-z” 中的字符組合而成的字符串。在鹽值中使用此范圍之外的字符將導致 crypt() 返回一個空字符串。兩位 cost 參數是循環次數以 2 為底的對數,它的范圍是 04-31,超出這個范圍將導致 crypt() 失敗。

CRYPT_SHA256

SHA-256 算法使用一個以 $5$ 開頭的 16 字符字符串鹽值進行散列。如果鹽值字符串以 “rounds=<N>$” 開頭,N 的數字值將被用來指定散列循環的執行次數,這點很像 Blowfish 算法的 cost 參數。默認的循環次數是 5000,最小是 1000,最大是 999,999,999。超出這個范圍的 N 將會被轉換為最接近的值。

CRYPT_SHA512

SHA-512 算法使用一個以 $6$ 開頭的 16 字符字符串鹽值進行散列。如果鹽值字符串以 “rounds=<N>$” 開頭,N 的數字值將被用來指定散列循環的執行次數,這點很像 Blowfish 算法的 cost 參數。默認的循環次數是 5000,最小是 1000,最大是 999,999,999。超出這個范圍的 N 將會被轉換為最接近的值。

例:

?
1
2
3
if(CRYPT_MD5){
  echo "MD5加密:".crypt('something','$1$somethin$');
}

Sha1()加密算法

方式: 單向加密

語法: string sha1(string $str [, bool $raw_output=false]) 計算字符串的sha1散列值

$str: 加密的字符串

$raw_output: 如果可選的raw_output參數被設置為TRUE, 那么sha1摘要將以20字符長度的原始格式返回, 否則返回值是一個40字符串長度的十六進制數字.

URL編碼加密技術

編碼URL字符串: urlencode(string $str)

解碼已編碼的URL字符串: urldeocde(string $str)

編碼規范: 此字符串中除了-_.之外的所有非字母數字字符都將被替換成百分號(%)后跟兩位十六進制數, 空格則編碼為加號(+)

按照RFC1738對URL進行編碼: rawurlencode(string $str) : 返回從字符串,把空格編碼為%20

對已編碼的字符串進行解碼: rawurldecode(string $str) : 返回字符串, 此字符串中百分號%后跟兩位十六進制的序列豆將被替換成原義字符

urlencode和rawurlencode的區別只在于空格.

Base64編碼加密技術

使用base64對data進行編碼: base64_encode(string $data)

對使用MIME base64編碼的數據進行解碼: base64_decode(string $data[, $strict=false]) ; $strict:如果輸入的數據超出了base64的字母表,則返回false.

base64編碼的圖片還可以直接放在<img>標簽中顯示:

<img src="data:image/jpeg;base64,編碼字符串" alt=""/>

<img src="data:;base64,編碼字符串" alt=""/>

信息加密技術:

1 單項散列加密:

指通過不同輸入的長度的信息進行散列計算, 得到固定長度的輸出, 這個散列計算過程是單向的, 既不能對固定長度的輸出進行計算從而活兒輸出信息.

2 對稱散列加密

指加密和解密的密匙是同一個密匙或者可以互相推算.

3 非對稱散列加密

非對稱加密和解密的密匙不是同一個密匙, 其中一個對外公開, 被稱作公鑰, 另一個只有所有者知道.

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产成人精品午夜在线播放 | 日本免费不卡在线一区二区三区 | 99久久伊人一区二区yy5099 | 岛国免费大片 | 成年人免费看的视频 | 91香蕉视频在线播放 | 国产外围| 色香婷婷 | 爱情岛论坛亚洲一号路线 | 91四虎国自产在线播放线 | 波多野结衣在线免费观看 | 日韩中文字幕网站 | 帅老头恋帅老头同性tv | 国产美女做爰免费视频软件 | 99热这里只有精品在线 | 国产福利专区精品视频 | 99热com| 黑人巨大精品战中国美女 | 97视频久久久| 国产99在线观看 | chinesegay黑袜玩奴 | 女人国产香蕉久久精品 | 日本成年片高清在线观看 | 公园暴露娇妻小说 | 久久婷婷五月免费综合色啪 | a韩剧| 九九国产在线视频 | 调教催眠| 亚洲七七久久综合桃花 | 亚洲国产精品ⅴa在线观看 亚洲国产高清一区二区三区 | 亚洲一区二区三区免费视频 | 国产视频久久久久 | 搡60一70岁的老女人小说 | 国自产在线精品免费 | 狠狠的撞进去嗯啊h女强男视频 | 娇妻被朋友征服中文字幕 | 亚洲国产AV无码综合在线 | 国偷盗摄自产福利一区在线 | 色播影院性播影院私人影院 | 隔壁老王国产精品福利 | 国产一区私人高清影院 |