【问题标题】:Java Sha1 in PHPPHP 中的 Java Sha1
【发布时间】:2017-09-25 08:05:51
【问题描述】:

如何在 PHP 中获取这个 Java SHA1 结果?

    // Generating the Signature - Java
// import java.security.MessageDigest;
// import org.apache.commons.codec.binary.Base64;

String userId; 
String applicationKey; // E.g. "196087a1-e815-4bc4-8984-60d8d8a43f1d";
String applicationSecret; // E.g. "oYdgGRXoxEuJhGDY2KQ/HQ==";
long sequence; // fetch and increment last used sequence

String toSign = userId + applicationKey + sequence + applicationSecret;

MessageDigest messageDigest = MessageDigest.getInstance("SHA-1");
byte[] hash = messageDigest.digest(toSign.getBytes("UTF-8"));

String signature = Base64.encodeBase64String(hash).trim();

我需要 PHP 上的 UTF-8 Sha1,谢谢

这些代码输出的结果与 java utf-8 sha-1 不同:

1:

$toSign_base64 = trim(base64_encode($toSign));
$toSign_digest = trim(hash_hmac('sha1', base64_decode($toSign_base64), "", true));
$signature = trim(base64_encode($toSign_digest));

2:

$signature = trim(sha1($toSign));

3:

$signature = trim(base64_encode(sha1($toSign)));

结果:

"raw": "849165ca-7af7-4951-6969-e19fc9f50b66",
"java_utf8_sha1": "1kBtMaSGLLiUfoSh9qJaxQGZTiQ=",
"code_1": "07PGV/+gMgCylXyA2qPJ92y1eSo=",
"code_2": "d6406d31a4862cb8947e84a1f6a25ac501994e24",
"code_3": "ZDY0MDZkMzFhNDg2MmNiODk0N2U4NGExZjZhMjVhYzUwMTk5NGUyNA=="

【问题讨论】:

  • 您应该尝试自己编写代码。在doing more research 之后,如果您有问题发布您尝试过的方法,并清楚地解释什么不起作用,并提供a Minimal, Complete, and Verifiable example。阅读How to Ask 一个好问题。请务必take the tour 并阅读this
  • 只使用 sha1() 有什么问题(当然,除了 SHA-1 不再被视为安全哈希)?
  • 我将它用于 Sinch 的后端身份验证,它使用 Java UTF-8 SHA-1

标签: java php encryption sha1 sinch


【解决方案1】:

我 90% 确定 php 函数 sha1();使用 utf8 编码, 输出为raw,然后base64_encode,所以

<?php  base64_encode( sha1("849165ca-7af7-4951-6969-e19fc9f50b66", true) ); ?>

看看它是否给你和java一样的东西(我不知道java,只有php)

【讨论】:

  • 它不像 Java UTF 8 SHA-1 那样工作,我已经更新了关于结果的第一篇文章。
  • 你需要输出为原始然后base64_encode它得到相同的java,我用更新的代码编辑了我的答案
  • 它有效,我没有意识到 sha1 有原始输出,哈哈。非常感谢先生。
猜你喜欢
  • 1970-01-01
  • 2011-08-08
  • 1970-01-01
  • 2018-03-11
  • 2010-12-09
  • 1970-01-01
  • 1970-01-01
  • 2013-11-30
  • 1970-01-01
相关资源
最近更新 更多