當前位置: 首頁> 函數類別大全> crypt

crypt

單向字符串散列
名稱:crypt
分類:字符串
所屬語言:php
一句話介紹:單向的字符串加密法(hashing)。

實例

在本實例中,我們將測試不同的算法:

 <span class="token php language-php"><span class="token delimiter important"><?php</span>
<span class="token comment">// 兩字符salt</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token constant">CRYPT_STD_DES</span> <span class="token operator">==</span> <span class="token number">1</span> <span class="token punctuation">)</span>
<span class="token punctuation">{</span>
<span class="token keyword">echo</span> <span class="token string double-quoted-string">"Standard DES: "</span> <span class="token operator">.</span> <span class="token function">crypt</span> <span class="token punctuation">(</span> <span class="token string single-quoted-string">&#39;something&#39;</span> <span class="token punctuation">,</span> <span class="token string single-quoted-string">&#39;st&#39;</span> <span class="token punctuation">)</span> <span class="token operator">.</span> <span class="token string double-quoted-string">"\n<br>"</span> <span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">else</span>
<span class="token punctuation">{</span>
<span class="token keyword">echo</span> <span class="token string double-quoted-string">"Standard DES not supported.\n<br>"</span> <span class="token punctuation">;</span>
<span class="token punctuation">}</span>

<span class="token comment">// 4 字符salt</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token constant">CRYPT_EXT_DES</span> <span class="token operator">==</span> <span class="token number">1</span> <span class="token punctuation">)</span>
<span class="token punctuation">{</span>
<span class="token keyword">echo</span> <span class="token string double-quoted-string">"Extended DES: "</span> <span class="token operator">.</span> <span class="token function">crypt</span> <span class="token punctuation">(</span> <span class="token string single-quoted-string">&#39;something&#39;</span> <span class="token punctuation">,</span> <span class="token string single-quoted-string">&#39;_S4..some&#39;</span> <span class="token punctuation">)</span> <span class="token operator">.</span> <span class="token string double-quoted-string">"\n<br>"</span> <span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">else</span>
<span class="token punctuation">{</span>
<span class="token keyword">echo</span> <span class="token string double-quoted-string">"Extended DES not supported.\n<br>"</span> <span class="token punctuation">;</span>
<span class="token punctuation">}</span>

<span class="token comment">//以$1$ 開始的12 字符</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token constant">CRYPT_MD5</span> <span class="token operator">==</span> <span class="token number">1</span> <span class="token punctuation">)</span>
<span class="token punctuation">{</span>
<span class="token keyword">echo</span> <span class="token string double-quoted-string">"MD5: "</span> <span class="token operator">.</span> <span class="token function">crypt</span> <span class="token punctuation">(</span> <span class="token string single-quoted-string">&#39;something&#39;</span> <span class="token punctuation">,</span> <span class="token string single-quoted-string">&#39;$1$somethin$&#39;</span> <span class="token punctuation">)</span> <span class="token operator">.</span> <span class="token string double-quoted-string">"\n<br>"</span> <span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">else</span>
<span class="token punctuation">{</span>
<span class="token keyword">echo</span> <span class="token string double-quoted-string">"MD5 not supported.\n<br>"</span> <span class="token punctuation">;</span>
<span class="token punctuation">}</span>

<span class="token comment">// 以$2a$ 開始的Salt。雙數字的cost 參數:09. 22 字符</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token constant">CRYPT_BLOWFISH</span> <span class="token operator">==</span> <span class="token number">1</span> <span class="token punctuation">)</span>
<span class="token punctuation">{</span>
<span class="token keyword">echo</span> <span class="token string double-quoted-string">"Blowfish: "</span> <span class="token operator">.</span> <span class="token function">crypt</span> <span class="token punctuation">(</span> <span class="token string single-quoted-string">&#39;something&#39;</span> <span class="token punctuation">,</span> <span class="token string single-quoted-string">&#39;$2a$09$anexamplestringforsalt$&#39;</span> <span class="token punctuation">)</span> <span class="token operator">.</span> <span class="token string double-quoted-string">"\n<br>"</span> <span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">else</span>
<span class="token punctuation">{</span>
<span class="token keyword">echo</span> <span class="token string double-quoted-string">"Blowfish DES not supported.\n<br>"</span> <span class="token punctuation">;</span>
<span class="token punctuation">}</span>

<span class="token comment">// 以$5$ 開始的16 字符salt。周長的默認數是5000。</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token constant">CRYPT_SHA256</span> <span class="token operator">==</span> <span class="token number">1</span> <span class="token punctuation">)</span>
<span class="token punctuation">{</span>
<span class="token keyword">echo</span> <span class="token string double-quoted-string">"SHA-256: "</span> <span class="token operator">.</span> <span class="token function">crypt</span> <span class="token punctuation">(</span> <span class="token string single-quoted-string">&#39;something&#39;</span> <span class="token punctuation">,</span> <span class="token string single-quoted-string">&#39;$5$rounds=5000$anexamplestringforsalt$&#39;</span> <span class="token punctuation">)</span> <span class="token operator">.</span> <span class="token string double-quoted-string">"\n<br>"</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span>
<span class="token keyword">else</span>
<span class="token punctuation">{</span>
<span class="token keyword">echo</span> <span class="token string double-quoted-string">"SHA-256 not supported.\n<br>"</span> <span class="token punctuation">;</span>
<span class="token punctuation">}</span>

<span class="token comment">// 以$5$ 開始的16 字符salt。周長的默認數是5000。</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token constant">CRYPT_SHA512</span> <span class="token operator">==</span> <span class="token number">1</span> <span class="token punctuation">)</span>
<span class="token punctuation">{</span>
<span class="token keyword">echo</span> <span class="token string double-quoted-string">"SHA-512: "</span> <span class="token operator">.</span> <span class="token function">crypt</span> <span class="token punctuation">(</span> <span class="token string single-quoted-string">&#39;something&#39;</span> <span class="token punctuation">,</span> <span class="token string single-quoted-string">&#39;$6$rounds=5000$anexamplestringforsalt$&#39;</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">else</span>
<span class="token punctuation">{</span>
<span class="token keyword">echo</span> <span class="token string double-quoted-string">"SHA-512 not supported."</span> <span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token delimiter important">?></span></span>

上面的代碼的輸出(取決於操作系統):

 Standard DES: stqAdD7zlbByI
Extended DES: _S4..someQXidlBpTUu6
MD5: $1$somethin$4NZKrUlY6r7K7.rdEOZ0w.
Blowfish: $2a$09$anexamplestringforsaleLouKejcjRlExmf1671qw3Khl49R3dfu
SHA-256: $5$rounds=5000$anexamplestringf$KIrctqsxo2wrPg5Ag/hs4jTi4PmoNKQUGWFXlVy9vu9
SHA-512: $6$rounds=5000$anexamplestringf$Oo0skOAdUFXkQxJpwzO05wgRHG0dhuaPBaOU/
oNbGpCEKlf/7oVM5wn6AN0w2vwUgA0O24oLzGQpp1XKI6LLQ0.
同類函數
  • str_replace的不區分大小寫的版本 str_ireplace

    str_ireplace

    str_replace的不區分大小寫的版
  • 反引用一個使用addcslashes() 轉義的字符串 stripcslashes

    stripcslashes

    反引用一個使用addcslashes()
  • implode的別名 join

    join

    implode的別名
  • 判斷一個字符串中是否包含一個給定的子字符串 str_contains

    str_contains

    判斷一個字符串中是否包含一個給定的子字符
  • 使用另一個字符串將字符串填充到某個長度 str_pad

    str_pad

    使用另一個字符串將字符串填充到某個長度
  • 檢查字符串是否以給定的子字符串開頭 str_starts_with

    str_starts_with

    檢查字符串是否以給定的子字符串開頭
  • 翻譯字符或替換子字符串-轉換指定字符 strtr

    strtr

    翻譯字符或替換子字符串-轉換指定字符
  • 查找指定字符在字符串中的最後一次出現 strrchr

    strrchr

    查找指定字符在字符串中的最後一次出現