Heim >php教程 >php手册 >字符串加密解密算法

字符串加密解密算法

WBOY
WBOYOriginal
2016-06-13 09:35:141293Durchsuche

 php5.5中有更为可靠和方便的加密方式。喜欢钻研的朋友可以了解一下:

 password_hash()

http://www.php.net/manual/zh/function.password-hash.php

基于mcrypt扩展,按位异或总结的两个字符串加密解密算法

<?<span>php
</span><span>/*</span><span>*
 * @info 字符串加密解密算法一,利用mcrypt扩展
 * @param string $string 待处理字符串
 *        $action ENCODE,加密 | DECODE,解密
 * @return string $returnstr
 * @date 2014/4/22
 * @author tonglei
 </span><span>*/</span>

<span>function</span> mcrypt_handle_string(<span>$string</span>, <span>$action</span> = 'ENCODE'<span>)
{
        </span>!<span>is_array</span>(<span>$string</span>) or <span>exit</span><span>;
        </span><span>$action</span> == 'DECODE' && <span>$string</span> = <span>base64_decode</span>(<span>$string</span><span>);
        </span><span>$key</span> = "123456"; <span>//</span><span>key可自定义或在配置文件中获取</span>
        <span>$mcryptAlgorithm</span> = MCRYPT_DES; <span>//</span><span>选择一种加密算法</span>
        <span>$mcryptMode</span> = MCRYPT_MODE_ECB; <span>//</span><span>选择一种加密模式</span>
        <span>$mcryptIv</span> = mcrypt_create_iv(mcrypt_get_iv_size(<span>$mcryptAlgorithm</span>, <span>$mcryptMode</span>),<span>
                MCRYPT_RAND); </span><span>//</span><span>创建初始化向量</span>

        <span>$returnstr</span> = <span>base64_encode</span>(mcrypt_encrypt(<span>$mcryptAlgorithm</span>, <span>$key</span>, <span>$string</span>, <span>$mcryptMode</span>,
                <span>$mcryptIv</span><span>));
        </span><span>if</span>('DECODE' == <span>$action</span><span>)
        {
                </span><span>$returnstr</span> = mcrypt_decrypt(<span>$mcryptAlgorithm</span>, <span>$key</span>, <span>$string</span>, <span>$mcryptMode</span>, <span>$mcryptIv</span><span>);
        }
        </span><span>return</span> <span>$returnstr</span><span>;

}</span>

 

<?<span>php
</span><span>/*</span><span>*
 *
 * @info 字符串加密解密算法二 利用按位异或
 * @param string $string 待处理字符串
 * @param $action ENCODE 加密 | DECODE 解密
 * @return string
 </span><span>*/</span>
<span>function</span> StrCode(<span>$string</span>, <span>$action</span> = 'ENCODE'<span>)
{
        </span><span>$action</span> != 'ENCODE' && <span>$string</span> = <span>base64_decode</span>(<span>$string</span><span>);
        </span><span>$code</span> = ''<span>;
        </span><span>$key</span> = <span>substr</span>(<span>md5</span>(<span>$GLOBALS</span>['pwServer']['HTTP_USER_AGENT'] . <span>$GLOBALS</span>['db_hash']),
                8, 18<span>);
        </span><span>$keyLen</span> = <span>strlen</span>(<span>$key</span><span>);
        </span><span>$strLen</span> = <span>strlen</span>(<span>$string</span><span>);
        </span><span>for</span> (<span>$i</span> = 0; <span>$i</span> < <span>$strLen</span>; <span>$i</span>++<span>)
        {
                </span><span>$k</span> = <span>$i</span> % <span>$keyLen</span><span>;
                </span><span>$code</span> .= <span>$string</span>[<span>$i</span>] ^ <span>$key</span>[<span>$k</span><span>];
        }
        </span><span>return</span> (<span>$action</span> != 'DECODE' ? <span>base64_encode</span>(<span>$code</span>) : <span>$code</span><span>);
}</span>

 

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn