zoukankan      html  css  js  c++  java
  • 简单对称算法

    简单对称算法

    class Symmetry
    {
        /**
         * 简单对称加密算法之加密
         * @param String $string 需要加密的字串
         * @param String $skey   加密EKY
         * @return String
         */
        public static function encode($string = '', $skey = 'cxphp')
        {
            //先使用 MIME base64 对数据进行编码后的字符串转换为数组
            $strArr   = str_split(base64_encode($string));
            //计算数组中单元数目
            $strCount = count($strArr);
            //拼接上加密KEY
            foreach (str_split($skey) as $key => $value) {
                $key < $strCount && $strArr[$key] .= $value;
            }
            //替换字符返回加密字符串
            return str_replace(array('=', '+', '/'), array('O0O0O', 'o000o', 'oo00o'), join('', $strArr));
        }
    
        /**
         * 简单对称加密算法之解密
         * @param String $string 需要解密的字串
         * @param String $skey   解密KEY
         * @return String
         */
        public static function decode($string = '', $skey = 'cxphp')
        {
            //反替换字符串,在变为数组
            $strArr   = str_split(str_replace(array('O0O0O', 'o000o', 'oo00o'), array('=', '+', '/'), $string), 2);
            $strCount = count($strArr);
            foreach (str_split($skey) as $key => $value) {
                $key <= $strCount && isset($strArr[$key]) && $strArr[$key][1] === $value && $strArr[$key] = $strArr[$key][0];
            }
            return base64_decode(join('', $strArr));
        }
    }
    
  • 相关阅读:
    [POJ 1200]Crazy Search
    [来源不详]删数方案数
    noip搜索模拟题 骰子
    [SDOI2010]地精部落
    [HAOI2008]硬币购物
    BZOJ1009: [HNOI2008]GT考试
    BZOJ1830: [AHOI2008]Y型项链 & BZOJ1789: [Ahoi2008]Necklace Y型项链
    BZOJ1251: 序列终结者
    BZOJ3620: 似乎在梦中见过的样子
    BZOJ4477: [Jsoi2015]字符串树
  • 原文地址:https://www.cnblogs.com/mxyindex/p/11051019.html
Copyright © 2011-2022 走看看