当前位置: 首页> 函数类别大全> 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">'something'</span><span class="token punctuation">,</span><span class="token string single-quoted-string">'st'</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">'something'</span><span class="token punctuation">,</span><span class="token string single-quoted-string">'_S4..some'</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">'something'</span><span class="token punctuation">,</span><span class="token string single-quoted-string">'$1$somethin$'</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">'something'</span><span class="token punctuation">,</span><span class="token string single-quoted-string">'$2a$09$anexamplestringforsalt$'</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">'something'</span><span class="token punctuation">,</span><span class="token string single-quoted-string">'$5$rounds=5000$anexamplestringforsalt$'</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">'something'</span><span class="token punctuation">,</span><span class="token string single-quoted-string">'$6$rounds=5000$anexamplestringforsalt$'</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_shuffle

    str_shuffle

    随机打乱一个字符串
  • 计算字符串中全部字符都存在于指定字符集合中的第一段子串的长度 strspn

    strspn

    计算字符串中全部字符都存在于指定字符集合
  • 将8位字符串转换为带引号的可打印字符串 quoted_printable_encode

    quoted_printable_encode

    将8位字符串转换为带引号的可打印字符串
  • 二进制安全比较字符串(从偏移位置比较指定长度) substr_compare

    substr_compare

    二进制安全比较字符串(从偏移位置比较指定
  • 计算文件的sha1哈希值 sha1_file

    sha1_file

    计算文件的sha1哈希值
  • 在字符串所有新行之前插入 HTML 换行标记 nl2br

    nl2br

    在字符串所有新行之前插入HTML换行标记
  • 查找字符串的首次出现 strstr

    strstr

    查找字符串的首次出现
  • 输出一个或多个字符串 echo

    echo

    输出一个或多个字符串