Home >Backend Development >PHP Tutorial >String encryption and decryption algorithm_PHP tutorial

String encryption and decryption algorithm_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 10:29:51861browse

There is a more reliable and convenient encryption method in php5.5. Friends who like to delve deeper can find out:

password_hash()

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

Two string encryption and decryption algorithms based on mcrypt extension, bitwise XOR summary

<?<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>

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/769761.htmlTechArticleThere is a more reliable and convenient encryption method in php5.5. Friends who like to study can learn about it: password_hash() http://www.php.net/manual/zh/function.password-hash.php Based on mcrypt extension...
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