java中的字节数组byte[]在php中的实现

php PHP · xingqi · 于 1年前 发布 · 1023 次阅读

项目需求

最近在对接JAVA 3des接口中遇到java加密中全程使用字节数组,所以需要使用PHP实现加密过程使用字节数组

技术背景

项目php7.2身份证认证接口java

实现原理

PHP转换字节数组需要使用ord函数和chr函数

ord() 函数返回字符串中第一个字符的 ASCII 值 根据每个字符返回的ASCII码对应的十进制数字 chr() 函数从指定 ASCII 值返回字符 ASCII 值可被指定为十进制值、八进制值或十六进制值。八进制值被定义为带前置 0,十六进制值被定义为带前置 0x

实现的目标

php7.2可以正常转译出跟JAVA相等的字节数组

关键代码

    /**
     * 将字节数组转化为string类型的数据
     * @param $bytes 字节数组
     * @param $str 目标字符串
     * @return 一个string类型的数据
     */
    protected function tostr($bytes) {
        $str = '';
        foreach($bytes as $ch) {
            $str .= chr($ch);
        }
        return $str;
    }

    /**
     * 转换一个string字符串为byte数组
     * @param $str 需要转换的字符串
     * @param $bytes 目标byte数组
     */
    protected function getbytes($str) {
        $len = strlen($str);
        $bytes = array();
        for($i=0;$i<$len;$i++) {
            if(ord($str[$i]) >= 128){
                $byte = ord($str[$i]) - 256;
            }else{
                $byte = ord($str[$i]);
            }
            $bytes[] =  $byte ;
        }
        return $bytes;
    }

本文由 xingqi 创作,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。

共收到 0 条回复
没有找到数据。
添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册