Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.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的SHA1字节数组转换_Java_Php_Variables_Type Conversion_Sha1 - Fatal编程技术网

从java到PHP的SHA1字节数组转换

从java到PHP的SHA1字节数组转换,java,php,variables,type-conversion,sha1,Java,Php,Variables,Type Conversion,Sha1,我必须将一个web应用程序从Java更新到PHP,我发现了一些难题。。。 最大的问题是将SHA1从Java转换为PHP,因为在我之前有人开发了一个浏览器扩展,需要一个特定的身份验证代码才能工作。。。我无法更改插件,我只需将web应用程序从java转换为php 代码如下: private static final byte[] SecretKey; public static String AuthCode(String url) { byte[] urlBytes = url.

我必须将一个web应用程序从Java更新到PHP,我发现了一些难题。。。 最大的问题是将SHA1从Java转换为PHP,因为在我之前有人开发了一个浏览器扩展,需要一个特定的身份验证代码才能工作。。。我无法更改插件,我只需将web应用程序从java转换为php

代码如下:

 private static final byte[] SecretKey;

  public static String AuthCode(String url) {

    byte[] urlBytes = url.getBytes("US-ASCII");

    byte[] concatenated = new byte[SecretKey.length + urlBytes.length];
    System.arraycopy(SecretKey, 0, concatenated, 0, SecretKey.length);
    System.arraycopy(urlBytes, 0, concatenated, SecretKey.length, urlBytes.length);

    byte[] hash = HashTools.calculateHash(concatenated, "SHA1");
    return CodecTools.encodeBASE64(hash);
  }

  static {
    SecretKey = new byte[] { 18, -15, -48, 73, 54, -115, 34, -87 };
  }
现在,我发现在php中很难将SecretKey从字节转换为其他内容。。因为php没有字节变量。。。我读到php中的sha1与java不同

在PHP中,我无法生成数组字符的sha1,它只需要一个字符串

(其他stackoverflow答案仅建议如何将Java代码更改为与php相等的代码。我需要php代码应与Java相等…)

我希望有人能帮助我,因为我不太懂Java

感谢所有:)

使用简单字符串作为字节容器

例如,如果要存储密钥:

$secretKeyArray = array(18, -15, -48, 73, 54, -115, 34, -87);

$secretString = '';
foreach($secretKeyArray as $k => $v) {
   $secretString.= chr($v & 0xFF); // trim to 8 bits (for the negative values)
}
现在您已将密钥存储在
$secretString

编辑:

连接的数组将是:

$concatenated = $secretString . $url;
然后

return base64_encode(sha1($concatenated, true));

谢谢你。。。但是如何处理
urlBytes
?在Java中有
.getBytes(“US-ASCII”)
,在PHP中没有…这里有些奇怪。。。使用此
secretkey=array(-26,68,-35,-71,-92,66,66,-6,-78,-15,-18,79,74,96,58,-46),
和此
url=”http://localhost:8080/sdweb/install/plugin?goto=http%3A%2F%2Flocalhost%3A8080%2Fsdweb%2Fload%2Fform“
我在java中有这个
auth code=GXkt5cLC9+ioiewwwwbwarnuxmev0=
”。。。在PHP第。。。。它是不同的…它是
fviaimu5Mu6X/4d51bzVDM3KbzI=
你是按原样传递url还是按解码后的url?尝试一步一步地调试以捕捉差异。