PHP中的Java Sha1 [英] Java Sha1 in PHP

查看:95
本文介绍了PHP中的Java Sha1的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

How to get the this Java SHA1 Result in PHP ?

    // 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,谢谢

I need the UTF-8 Sha1 On PHP, thank you

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

These code output different result than 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=="

推荐答案

我90%确信php函数sha1();用utf8编码完成输出为原始文件,然后进行base64_encode编码,所以

I am 90% sure the php function sha1(); does it with utf8 encoding, Output as raw, then base64_encode it, so

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

看看它是否给您与java相同的东西(我不知道java,只有php)

and see if it gives you the same as java ( I do not know java, only php )

这篇关于PHP中的Java Sha1的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆