java中pack函数_Java等价于PHP的pack函数

我有一个示例应用程序,它在PHP中生成SHA1哈希,如下所示.

base64_encode(pack('H*', sha1($pass)));

我试图在Java中实现相同的目标,但是到目前为止,输出是不同的.我使用的方法如下(Base64和Hex类来自commons-codec库).

byte[] rawSHA = null;

byte[] base64HexSHA = null;

String hex = null;

MessageDigest md= null;

// Get Message Digest Instance.

try {

md = MessageDigest.getInstance(SHA1_ALGORITHM);

} catch (NoSuchAlgorithmException e) {

LOG.error("Unable to load SHA-1 Message Digest : " + e.getMessage(), e);

throw new IllegalStateException("SHA-1 Message Digest Instance Not Found");

}

// Build SHA1 Hash

rawSHA = md.digest(rawText.getBytes("UTF-8"));

// Convert to HEX

hex = new String(Hex.encodeHex(rawSHA));

// Encode to Base 64

base64HexSHA = Base64.encodeBase64(hex.getBytes("UTF-8"));

// Return String

return new String(base64HexSHA);

我的问题是,我采用的方法是否会产生与PHP的pack()函数相同的输出?我的猜测是PHP pack()函数返回原始字节,而Hex.encodeHex返回十六进制字符串形式(参考号:http://www.w3schools.com/php/func_misc_pack.asp).

如何获得与Java中PHP的pack()函数相同的输出(或上述PHP代码的完整输出)?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值