当前位置: 首页 > 知识库问答 >
问题:

java HMAC/SHA512代

费明诚
2023-03-14
<?php 
$key = "0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF";
$binkey = pack("H*", $key); 
echo strtoupper(hash_hmac('sha512', "ABC", $binkey)); 
?>
100A6A016A4B21AE120851D51C93B293D95B7D8A44B16ACBEFC2D1C9DF02B6F54FA3C2D6802E52FED5DF8652DDD244788A204682D2D1CE861FDA4E67F2792643
private String generateHMAC( String datas )
    {

        //                final Charset asciiCs = Charset.forName( "utf-8" );
        Mac mac;
        String result = "";
        try
        {
            byte[] bytesKey = PayboxConstants.KEY.getBytes( );
            final SecretKeySpec secretKey = new SecretKeySpec( bytesKey, "HmacSHA512" );
            mac = Mac.getInstance( "HmacSHA512" );
            mac.init( secretKey );
            final byte[] macData = mac.doFinal( datas.getBytes( ) );
            byte[] hex = new Hex( ).encode( macData );
            result = new String( hex, "ISO-8859-1" );
        }
        catch ( final NoSuchAlgorithmException e )
        {
            AppLogService.error( e );
        }
        catch ( final InvalidKeyException e )
        {
            AppLogService.error( e );
        }
        catch ( UnsupportedEncodingException e )
        {
            AppLogService.error( e );
        }

        return result.toUpperCase( );

    }
AA6492987D7A7AC81109E877315414806F1973CC47B897ECE713171A25A11B279329B1BFF39EA72A5EFB7EDCD71D1F34D5AAC49999A780BD13F019ED99685B80

我尝试了很多其他java代码,但没有一个是php版本的完全克隆。

我做错了什么?

共有1个答案

苏宜人
2023-03-14

您只是忘记了在Java代码中模仿pack()的行为(无论您需要什么)。

使用

final SecretKeySpec secretKey = new SecretKeySpec( DatatypeConverter.parseHexBinary(PayboxConstants.KEY), "HmacSHA512" );

在Java代码中。

其中DataTypeConverter.parseHexBinary()来自JAXB API。

 类似资料:
  • import "crypto/sha512" sha512包实现了SHA384和SHA512哈希算法,参见FIPS 180-2。 Constants func Sum512(data []byte) [Size]byte func New() hash.Hash func Sum384(data []byte) (sum384 [Size384]byte) func New384() hash.H

  • 问题内容: 我有这个生成 HMAC (而不是简单的消息摘要)的php代码: 并与输入输出是: 我需要在Java中将其克隆。 所以这是我当前的Java克隆: 但这并不能完成工作,因为对于相同的输入(ABC),其输出为: 我尝试了很多其他的Java代码,但没有一个是php版本的精确克隆。 我做错什么了? 问题答案: 您只是忘了模仿Java代码中的行为(无论您需要使用什么)。 用 在您的Java代码中。

  • 我有以下PHP代码: 如何在android(java)中实现同样的功能。 我已经尝试了hmac sha512可用的几种方法,但php代码段的结果与我的不同。 提前致谢

  • 本文向大家介绍JavaScript SHA512加密算法详细代码,包括了JavaScript SHA512加密算法详细代码的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了JavaScript SHA512加密算法,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家有所帮助,希望大家继续关注呐喊教程的最新内容。

  • 我需要:基于密码的加密使用sha512消化和256位AES加密与cbc和bc标志设置。 看来算法应该是这样的:PBEWithSHA512AndAES256-CBC-BC 但是在我的本地环境中,我得到错误:org.jasypt.exceptions.encryptioninitializationexception:java.security.nosuchalgorithmexception:没有这

  • 问题内容: 我正在使用GoLang中的授权模块。在我们将PHP5与crypt函数一起使用之前。哈希生成类似于SHA-512: 并像这样存储在数据库中。但是现在我需要使其在GoLang中也能正常工作。我在Google上进行了搜索,并尝试了不同的方法,例如: 但是所有产生的东西都不一样。谁能进一步帮助我们? 我们要验证并创建类似php版本的哈希。 提前致谢。 问题答案: https://github.