我在php中有以下代码:
$binKey = pack("H*", $keyTest);
$hmac = strtoupper(hash_hmac($pbx_hash, $msg, $binKey));
我如何在android(java)中实现相同的功能。
我尝试了几种可用于hmac sha512的方法,但php片段的结果与我的不同。
提前致谢
答案 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( );
}