首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解使用Zend框架用PHP编写的代码

理解使用Zend框架用PHP编写的代码
EN

Stack Overflow用户
提问于 2016-01-10 08:57:11
回答 2查看 94关注 0票数 0

我是java开发人员,我正在尝试使用一个where (蜱类),其中他们解释了两个示例,一个用PHP,另一个用C#。不幸的是,我无法得到其中的任何一个。下面我提到了PHP示例。

代码语言:javascript
复制
 public function GenerateSignature($Secret,$PathAndQuery)
     {
       return base64_encode(\Zend_Crypt_Hmac::compute($Secret, 'sha256',
       $PathAndQuery, \Zend_Crypt_Hmac::BINARY));
     }

有人能解释一下我如何用Java代码实现同样的目标吗?我尝试过在下面的代码,但它似乎没有产生适当的结果。

代码语言:javascript
复制
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。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-10 12:35:20

使用sha256..Then散列一个秘密关键字,使用该关键字对Base64中的任何内容进行编码。

看看http://www.jokecamp.com/blog/examples-of-creating-base64-hashes-using-hmac-sha256-in-different-languages/#java

不完全是您想要的,但您可以将进程转换为一个函数,该函数接受两个参数并返回Base64值。

代码语言:javascript
复制
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;

public class ApiSecurityExample {
  public static void main(String[] args) {
    try {
     String secret = "secret";
     String message = "Message";

     Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
     SecretKeySpec secret_key = new SecretKeySpec(secret.getBytes(), "HmacSHA256");
     sha256_HMAC.init(secret_key);

     String hash = Base64.encodeBase64String(sha256_HMAC.doFinal(message.getBytes()));
     System.out.println(hash);
    }
    catch (Exception e){
     System.out.println("Error");
    }
   }
}
票数 1
EN

Stack Overflow用户

发布于 2016-01-10 10:10:08

用于消息摘要的Java与C#非常相似。请遵循以下示例:https://docs.oracle.com/javase/7/docs/api/java/security/MessageDigest.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34703699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档