zoukankan      html  css  js  c++  java
  • 字符串加密解密算法

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

     password_hash()

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

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

    <?php
    /**
     * @info 字符串加密解密算法一,利用mcrypt扩展
     * @param string $string 待处理字符串
     *        $action ENCODE,加密 | DECODE,解密
     * @return string $returnstr
     * @date 2014/4/22
     * @author tonglei
     */
    
    function mcrypt_handle_string($string, $action = 'ENCODE')
    {
            !is_array($string) or exit;
            $action == 'DECODE' && $string = base64_decode($string);
            $key = "123456"; //key可自定义或在配置文件中获取
            $mcryptAlgorithm = MCRYPT_DES; //选择一种加密算法
            $mcryptMode = MCRYPT_MODE_ECB; //选择一种加密模式
            $mcryptIv = mcrypt_create_iv(mcrypt_get_iv_size($mcryptAlgorithm, $mcryptMode),
                    MCRYPT_RAND); //创建初始化向量
    
            $returnstr = base64_encode(mcrypt_encrypt($mcryptAlgorithm, $key, $string, $mcryptMode,
                    $mcryptIv));
            if('DECODE' == $action)
            {
                    $returnstr = mcrypt_decrypt($mcryptAlgorithm, $key, $string, $mcryptMode, $mcryptIv);
            }
            return $returnstr;
    
    }
    <?php
    /**
     *
     * @info 字符串加密解密算法二 利用按位异或
     * @param string $string 待处理字符串
     * @param $action ENCODE 加密 | DECODE 解密
     * @return string
     */
    function StrCode($string, $action = 'ENCODE')
    {
            $action != 'ENCODE' && $string = base64_decode($string);
            $code = '';
            $key = substr(md5($GLOBALS['pwServer']['HTTP_USER_AGENT'] . $GLOBALS['db_hash']),
                    8, 18);
            $keyLen = strlen($key);
            $strLen = strlen($string);
            for ($i = 0; $i < $strLen; $i++)
            {
                    $k = $i % $keyLen;
                    $code .= $string[$i] ^ $key[$k];
            }
            return ($action != 'DECODE' ? base64_encode($code) : $code);
    }
  • 相关阅读:
    [zz]利用__FILE__, __LINE__, __FUNCTION__跟踪调试程序
    [zz]va_start() 和 va_end()函数应用
    [zz]shmdt与shmctl的区别
    [zz]GNU C 扩展之__attribute__ 机制简介 [2]
    Linux errno 错误含义速查
    过滤器的简介
    MyBatis中的原理
    文件上传
    mybatis实体为什么要提供一个无参的构造函数
    为什么要有无参构造方法
  • 原文地址:https://www.cnblogs.com/dytl/p/3681204.html
Copyright © 2011-2022 走看看