【发布时间】:2016-01-11 02:35:40
【问题描述】:
我是 Java 开发人员,我正在尝试使用一个 WEB 服务 API (ticketutils),他们已经解释了两个示例,第一个示例使用 PHP,第二个示例使用C#。不幸的是,我无法得到它们中的任何一个。我在下面提到了 PHP 示例。
public function GenerateSignature($Secret,$PathAndQuery)
{
return base64_encode(\Zend_Crypt_Hmac::compute($Secret, 'sha256',
$PathAndQuery, \Zend_Crypt_Hmac::BINARY));
}
谁能解释我如何使用 Java 代码实现相同的目标?我试过下面的代码,但似乎没有产生正确的结果。
public static String generateSignature(String secrete, String pathAndQuery){
String encoded = null;
try {
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.update(secrete.getBytes("UTF-8"));
md.update(pathAndQuery.getBytes("UTF-8"));
byte[] digest = md.digest();
encoded = Base64.getEncoder().encodeToString(digest);
} catch (Exception e) {
e.printStackTrace();
}
return encoded;
}
注意:我在编写上述代码时使用了 Java-8。
【问题讨论】:
-
我认为从 c# 到 java 可能更容易..
-
@aaronxxx,你也可以看到 C# 方法(参考链接),如果可能的话帮助我。
标签: java php zend-framework encoding sha256