亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長(zhǎng)資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    php中的六種密碼加密方式分別是什么

    php中的六種密碼加密方式分別是什么

    六種密碼加密方式如下:

    1、MD5加密

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

    參數(shù)

    str — 原始字符串。

    raw_output — 如果可選的 raw_output 被設(shè)置為 TRUE,那么 MD5 報(bào)文摘要將以16字節(jié)長(zhǎng)度的原始二進(jìn)制格式返回。

    這是一種不可逆加密,執(zhí)行如下的代碼

    $password = '123456'; echo md5($password);

    得到結(jié)果是e10adc3949ba59abbe56e057f20f883e

    2、Crype加密

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

    crypt() 返回一個(gè)基于標(biāo)準(zhǔn) UNIX DES 算法或系統(tǒng)上其他可用的替代算法的散列字符串。

    參數(shù)

    str — 待散列的字符串。

    salt — 可選的鹽值字符串。如果沒(méi)有提供,算法行為將由不同的算法實(shí)現(xiàn)決定,并可能導(dǎo)致不可預(yù)料的結(jié)束。

    這是也一種不可逆加密,執(zhí)行如下的代碼

    代碼如下:

    $password = '123456'; $salt = "test";// 只取前兩個(gè) echo crypt($password, $salt);

    得到的結(jié)果是teMGKvBPcptKo

    使用自動(dòng)鹽值的例子如下:

    代碼如下:

    $password = crypt('mypassword'); // 自動(dòng)生成鹽值 /* 你應(yīng)當(dāng)使用 crypt() 得到的完整結(jié)果作為鹽值進(jìn)行密碼校驗(yàn),以此來(lái)避免使用不同散列算法導(dǎo)致的問(wèn)題。(如上所述,基于標(biāo)準(zhǔn) DES 算法的密碼散列使用 2 字符鹽值,但是基于 MD5 算法的散列使用 12 個(gè)字符鹽值。)*/ if (crypt('mypassword', $password) == $password) {    echo "Password verified!"; }

    執(zhí)行結(jié)果是輸出 Password verified!

    以不同散列類型使用 crypt()的例子如下:

    代碼如下:

    if (CRYPT_STD_DES == 1) {     echo 'Standard DES: ' . crypt('rasmuslerdorf', 'rl') . "n"; } if (CRYPT_EXT_DES == 1) {     echo 'Extended DES: ' . crypt('rasmuslerdorf', '_J9..rasm') . "n"; } if (CRYPT_MD5 == 1) {     echo 'MD5:          ' . crypt('rasmuslerdorf', '$1$rasmusle$') . "n"; } if (CRYPT_BLOWFISH == 1) {     echo 'Blowfish:     ' . crypt('rasmuslerdorf', '$2a$07$usesomesillystringforsalt$') . "n"; } if (CRYPT_SHA256 == 1) {     echo 'SHA-256:      ' . crypt('rasmuslerdorf', '$5$rounds=5000$usesomesillystringforsalt$') . "n"; } if (CRYPT_SHA512 == 1) {     echo 'SHA-512:      ' . crypt('rasmuslerdorf', '$6$rounds=5000$usesomesillystringforsalt$') . "n"; }

    其結(jié)果如下

    Standard DES: rl.3StKT.4T8M Extended DES: _J9..rasmBYk8r9AiWNc MD5:          $1$rasmusle$rISCgZzpwk3UhDidwXvin0 Blowfish:     $2a$07$usesomesillystringfore2uDLvp1Ii2e./U9C8sBjqp8I90dH6hi SHA-256:      $5$rounds=5000$usesomesillystri$KqJWpanXZHKq2BOB43TSaYhEWsQ1Lr5QNyPCDH/Tp.6 SHA-512:      $6$rounds=5000$usesomesillystri$D4IrlXatmP7rx3P3InaxBeoomnAihCKRVQP22JZ6EY47Wc6BkroIuUUBOov1i.S5KPgErtP/EN5mcO.ChWQW21

    (學(xué)習(xí)視頻分享:php視頻教程)

    在 crypt() 函數(shù)支持多重散列的系統(tǒng)上,下面的常量根據(jù)相應(yīng)的類型是否可用被設(shè)置為 0 或 1:

    CRYPT_STD_DES – 基于標(biāo)準(zhǔn) DES 算法的散列使用 "./0-9A-Za-z" 字符中的兩個(gè)字符作為鹽值。在鹽值中使用非法的字符將導(dǎo)致 crypt() 失敗。

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

    CRYPT_MD5 – MD5 散列使用一個(gè)以 $1$ 開始的 12 字符的字符串鹽值。

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

    CRYPT_SHA256 – SHA-256 算法使用一個(gè)以 $5$ 開頭的 16 字符字符串鹽值進(jìn)行散列。如果鹽值字符串以 “rounds=<N>$” 開頭,N 的數(shù)字值將被用來(lái)指定散列循環(huán)的執(zhí)行次數(shù),這點(diǎn)很像 Blowfish 算法的 cost 參數(shù)。默認(rèn)的循環(huán)次數(shù)是 5000,最小是 1000,最大是 999,999,999。超出這個(gè)范圍的 N 將會(huì)被轉(zhuǎn)換為最接近的值。

    CRYPT_SHA512 – SHA-512 算法使用一個(gè)以 $6$ 開頭的 16 字符字符串鹽值進(jìn)行散列。如果鹽值字符串以 “rounds=<N>$” 開頭,N 的數(shù)字值將被用來(lái)指定散列循環(huán)的執(zhí)行次數(shù),這點(diǎn)很像 Blowfish 算法的 cost 參數(shù)。默認(rèn)的循環(huán)次數(shù)是 5000,最小是 1000,最大是 999,999,999。超出這個(gè)范圍的 N 將會(huì)被轉(zhuǎn)換為最接近的值。

    3、Sha1加密

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

    參數(shù)

    str — 輸入字符串。

    raw_output — 如果可選的 raw_output 參數(shù)被設(shè)置為 TRUE,那么 sha1 摘要將以 20 字符長(zhǎng)度的原始格式返回,否則返回值是一個(gè) 40 字符長(zhǎng)度的十六進(jìn)制數(shù)字。

    這是也一種不可逆加密,執(zhí)行如下代碼:

    $password = '123456'; echo sha1($password);

    得到的結(jié)果是7c4a8d09ca3762af61e59520943dc26494f8941b

    4、URL加密

    string urlencode ( string $str )

    此函數(shù)便于將字符串編碼并將其用于 URL 的請(qǐng)求部分,同時(shí)它還便于將變量傳遞給下一頁(yè)。

    返回字符串,此字符串中除了 -_. 之外的所有非字母數(shù)字字符都將被替換成百分號(hào)(%)后跟兩位十六進(jìn)制數(shù),空格則編碼為加號(hào)(+)。此編碼與 WWW 表單 POST 數(shù)據(jù)的編碼方式是一樣的,同時(shí)與 application/x-www-form-urlencoded 的媒體類型編碼方式一樣。由于歷史原因,此編碼在將空格編碼為加號(hào)(+)方面與 RFC1738 編碼不同。

    string urldecode ( string $str )

    解碼給出的已編碼字符串中的任何 %##。 加號(hào)('+')被解碼成一個(gè)空格字符。

    這是一種可逆加密,urlencode方法用于加密,urldecode方法用于解密,執(zhí)行如下代碼:

    $url = 'http://www.xxx.com/CraryPrimitiveMan/'; $encodeUrl = urlencode($url); echo $encodeUrl . "n";// 如果是在網(wǎng)頁(yè)上展示的,就將n修改為<br/> echo urldecode($encodeUrl);

    得到的結(jié)果如下

    http%3A%2F%2Fwww.xxx.com%2FCraryPrimitiveMan%2F
    http://www.xxx.com/CraryPrimitiveMan/

    基于RFC 3986的加密URL的方法如下:

    如下:

    function myUrlEncode($string) {     $entities = array('%21', '%2A', '%27', '%28', '%29', '%3B', '%3A', '%40', '%26', '%3D', '%2B', '%24', '%2C', '%2F', '%3F', '%25', '%23', '%5B', '%5D');     $replacements = array('!', '*', "'", "(", ")", ";", ":", "@", "&", "=", "+", "$", ",", "/", "?", "%", "#", "[", "]");     return str_replace($entities, $replacements, urlencode($string)); }

    5、Base64信息編碼加密

    string base64_encode ( string $data )

    使用 base64 對(duì) data 進(jìn)行編碼。

    設(shè)計(jì)此種編碼是為了使二進(jìn)制數(shù)據(jù)可以通過(guò)非純 8-bit 的傳輸層傳輸,例如電子郵件的主體。

    Base64-encoded 數(shù)據(jù)要比原始數(shù)據(jù)多占用 33% 左右的空間。

    string base64_decode ( string $data [, bool $strict = false ] )

    對(duì) base64 編碼的 data 進(jìn)行解碼。

    參數(shù)

    data — 編碼過(guò)的數(shù)據(jù)。

    strict — 如果輸入的數(shù)據(jù)超出了 base64 字母表,則返回 FALSE。

    執(zhí)行如下代碼:

    $name = 'CraryPrimitiveMan'; $encodeName = base64_encode($name); echo $encodeName . "n"; echo base64_decode($encodeName);

    其結(jié)果如下

    如下:

    Q3JhcnlQcmltaXRpdmVNYW4= CraryPrimitiveMan

    推薦phpass

    經(jīng) phpass 0.3 測(cè)試,在存入數(shù)據(jù)庫(kù)之前進(jìn)行哈希保護(hù)用戶密碼的標(biāo)準(zhǔn)方式。 許多常用的哈希算法如 md5,甚至是 sha1 對(duì)于密碼存儲(chǔ)都是不安全的, 因?yàn)轳斂湍軌蚴褂媚切┧惴ㄝp而易舉地破解密碼。

    對(duì)密碼進(jìn)行哈希最安全的方法是使用 bcrypt 算法。開源的 phpass 庫(kù)以一個(gè)易于使用的類來(lái)提供該功能。

    代碼如下:

    <?php // Include phpass 庫(kù) require_once('phpass-03/PasswordHash.php') // 初始化散列器為不可移植(這樣更安全) $hasher = new PasswordHash(8, false); // 計(jì)算密碼的哈希值。$hashedPassword 是一個(gè)長(zhǎng)度為 60 個(gè)字符的字符串. $hashedPassword = $hasher->HashPassword('my super cool password'); // 你現(xiàn)在可以安全地將 $hashedPassword 保存到數(shù)據(jù)庫(kù)中! // 通過(guò)比較用戶輸入內(nèi)容(產(chǎn)生的哈希值)和我們之前計(jì)算出的哈希值,來(lái)判斷用戶是否輸入了正確的密碼 $hasher->CheckPassword('the wrong password', $hashedPassword);  // false $hasher->CheckPassword('my super cool password', $hashedPassword);  // true ?>

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)