最近在对接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 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。