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);
    }
  • 相关阅读:
    利用runtime检測这个对象是否存在某属性?
    Android Studio 使用 SVN 必然遇到问题:commit ** File out of data 问题解决方法
    JPA測试实例
    pat(A) 1063. Set Similarity(STL)
    @Override用在哪儿
    Highcharts数据表示(3)
    #pragma pack (n) 惹的祸
    C++二阶构造函数
    使用自定义的控件
    C++ explicit
  • 原文地址:https://www.cnblogs.com/dytl/p/3681204.html
Copyright © 2011-2022 走看看