Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java等价的PHP代码返回不同的Base64编码结果_Java_Php_Base64 - Fatal编程技术网

Java等价的PHP代码返回不同的Base64编码结果

Java等价的PHP代码返回不同的Base64编码结果,java,php,base64,Java,Php,Base64,Java代码 completeStrBytes = new byte[2]; completeStrBytes[0] = (byte)(signatureLength>>>8); //signatureLength = 128 completeStrBytes[1] = (byte)signatureLength; System.out.println(Base64.getEncoder().encodeToString(completeStrBytes)); 输出:友邦保险

Java代码

completeStrBytes = new byte[2];
completeStrBytes[0] = (byte)(signatureLength>>>8); //signatureLength = 128
completeStrBytes[1] = (byte)signatureLength;
System.out.println(Base64.getEncoder().encodeToString(completeStrBytes));
输出:友邦保险=

PHP代码

$firstPart = $signatureLength >> 8;
$secondPart = $signatureLength;
var_dump(base64_encode($firstPart . $secondPart));
输出:字符串(8)“MDEyOA=”

我理解PHP字符串已经被视为字节字符串

我可以知道如何在PHP中获得java等效代码吗?PHP代码中有什么错误


提前感谢。

如果您正在为2字节数组计算base64,请参见
{0x00,0x80}
。在php的情况下,您的计算基数为4个字符的字符串
“0128”
(将两个数字串接为字符串时得到)

您可能想首先:

UPD

您可能还希望使用函数将不同的数据类型转换为字符串:

<?php
  $signatureLength = 128;
  var_dump(base64_encode(pack('n', $signatureLength))); // string(4) "AIA="

注意,还有一个
base64url
编码,它不是PHP中的
base64\u encode()

例如,当您使用PHP
base64\u encode()
进行JWT编码/解码时,您会遇到麻烦

因此,对于您的情况,请尝试

var_dump(base64url_encode($firstPart . $secondPart));

@Rajesh这就是为什么我提供了这些功能。没有。
var_dump(base64url_encode($firstPart . $secondPart));
function base64url_encode($data)
{
    $b64 = base64_encode($data);
    if ($b64 === false) {
        return false;
    }
    $url = strtr($b64, '+/', '-_');
    return rtrim($url, '=');
}

function base64url_decode($data, $strict = false)
{
    $b64 = strtr($data, '-_', '+/');
    return base64_decode($b64, $strict);
}