Java HmacSHA512 生成(与PHP中hash_hmac一样)

PHP中有一个hash_hmac函数,hash_hmac(‘sha512’, $data, $key),可以用sha512算法给data通过key生成一个摘要,但Java中没有直接可用的方法。


	/**
	 * 与php中的hash_hmac('sha512', $data, $key)功能相同
	 * @param data
	 * @param key
	 * @return
	 */
	private String hmacSHA512(String data,String key) {
		String result = "";
		byte[] bytesKey = key.getBytes();
		final SecretKeySpec secretKey = new SecretKeySpec(bytesKey, "HmacSHA512");
		try {
			Mac mac = Mac.getInstance("HmacSHA512");
			mac.init(secretKey);
			final byte[] macData = mac.doFinal(data.getBytes());
			byte[] hex = new Hex().encode(macData);
			result = new String(hex, "ISO-8859-1");
		} catch (NoSuchAlgorithmException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		} catch (InvalidKeyException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		} catch (UnsupportedEncodingException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
		return result;
	}

需要apache的commons-codec包.

© 2013, 冰冻鱼. 请尊重作者劳动成果,复制转载保留本站链接! 应用开发笔记

发表评论

电子邮件地址不会被公开。 必填项已用*标注