Android:java中的Hmac SHA512

时间:2015-08-04 11:59:34

标签: android encryption hmac

我在php中有以下代码:

$binKey = pack("H*", $keyTest);
$hmac = strtoupper(hash_hmac($pbx_hash, $msg, $binKey));

我如何在android(java)中实现相同的功能。

我尝试了几种可用于hmac sha512的方法,但php片段的结果与我的不同。

提前致谢

2 个答案:

答案 0 :(得分:2)

你可以用这个来检查它。我使用HmacSHA512算法加密它之后我用base64编码它。

def main():
    x1,y1 = np.loadtxt('txt1.txt',unpack=True)
    x2,y2 = np.loadtxt('txt2.txt',unpack=True)
    plt.figure()
    plt.plot(x1,y1)
    plt.plot(x2,y2)

main()

答案 1 :(得分:0)

您可以在此处查看相同问题的答案:java hmac/sha512 generation

我已经搜索了很长时间才能看到正确的答案。我给你代码,也许它会帮助别人。

private String generateHMAC( String datas )
{

    //                final Charset asciiCs = Charset.forName( "utf-8" );
    Mac mac;
    String result = "";
    try
    {
      final SecretKeySpec secretKey = new SecretKeySpec( DatatypeConverter.parseHexBinary(PayboxConstants.KEY), "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( );

}