• PHP 字符串和十六进制互转


    今天在做项目中,因为要调用别人网站的接口,结果需要对请求和返回的时间进行十六进制加密处理,于是在网上查了下资料谢了一个转换Demo做个记录。

    如果在TP下使用可以将下面函数放到common.php中

    一,加密函数

    <?php
    /**
        *字符串转十六进制函数
        *@pream string $str='abc';
        */
        function strToHex($str){ 
            $hex="";
            for($i=0;$i<strlen($str);$i++)
            $hex.=dechex(ord($str[$i]));
            $hex=strtoupper($hex);
            return $hex;
        } 
    ?>

    二、解密函数

    <?php
    /**
        *十六进制转字符串函数
        *@pream string $hex='616263';
        */ 
        function hexToStr($hex){   
            $str=""; 
            for($i=0;$i<strlen($hex)-1;$i+=2)
            $str.=chr(hexdec($hex[$i].$hex[$i+1]));
            return  $str;
        } 
    ?>

    加密 解密 转换 函数使用Demo事例,这里为了方便写在了一个类中。

    <?php
    class Test{ 
        /**
        *字符串转十六进制函数
        *@pream string $str='abc';
        */
        public function strToHex($str){ 
            $hex="";
            for($i=0;$i<strlen($str);$i++)
            $hex.=dechex(ord($str[$i]));
            $hex=strtoupper($hex);
            return $hex;
        }   
         
        /**
        *十六进制转字符串函数
        *@pream string $hex='616263';
        */ 
        public function hexToStr($hex){   
            $str=""; 
            for($i=0;$i<strlen($hex)-1;$i+=2)
            $str.=chr(hexdec($hex[$i].$hex[$i+1]));
            return  $str;
        } 
    }
     <span style="white-space:pre">    </span>//测试Demo效果
        $test = new Test();
        $str = '要加密的内容sxfenglei';
        $data = $test->strToHex($str); 
        echo '加密内容:要加密的内容sxfenglei <br>'.$data.'<hr>';  
     
        $output = $test->hexToStr($data);
        echo '解密内容:E8A681E58AA0E5AF86E79A84E58685E5AEB9737866656E676C6569 <br>'.$output;  
    ?>

    运行结果:


    加密内容:要加密的内容sxfenglei
    E8A681E58AA0E5AF86E79A84E58685E5AEB9737866656E676C6569
    解密内容:E8A681E58AA0E5AF86E79A84E58685E5AEB9737866656E676C6569
    要加密的内容sxfenglei
    ————————————————
    原文链接:https://blog.csdn.net/fl442165035/article/details/49154891

  • 相关阅读:
    Java 进程占用内存过多,幕后元凶原来是线程太多
    领域驱动设计系列文章(3)——有选择性的使用领域驱动设计
    领域驱动设计系列文章(1)——通过现实例子显示领域驱动设计的威力
    RabbitMQ
    Redis与Memcached的区别
    memcached源码分析-----slab内存分配器
    C# Finalize和Dispose的区别
    [IoC容器Unity]第四回:使用范例
    [IoC容器Unity]第三回:依赖注入
    [IoC容器Unity]第二回:Lifetime Managers生命周期
  • 原文地址:https://www.cnblogs.com/houdj/p/14884549.html
Copyright © 2020-2023  润新知