Home  >  Article  >  php教程  >  字符串加密解密算法

字符串加密解密算法

WBOY
WBOYOriginal
2016-06-13 09:35:141225browse

 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>

 

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn