使用JAVA实现PHP中hash_hmac 函数
2014-08-27 18:21
471 查看
package com.trade.com796; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; /** * 1. hmac_sha1编码结果需要转换成hex格式 * * 2. java中base64的实现和php不一致,其中java并不会在字符串末尾填补=号以把字节数补充为8的整数 * * 3. hmac_sha1并非sha1, hmac_sha1是需要共享密钥的 * * @author LEI * */ public class HMACSHA1 { private static final String HMAC_SHA1 = "HmacSHA1"; /** * 生成签名数据_HmacSHA1加密 * * @param data * 待加密的数据 * @param key * 加密使用的key * @throws InvalidKeyException * @throws NoSuchAlgorithmException */ public static String getSignature(String data, String key) throws Exception { byte[] keyBytes = key.getBytes(); // 根据给定的字节数组构造一个密钥。 SecretKeySpec signingKey = new SecretKeySpec(keyBytes, HMAC_SHA1); Mac mac = Mac.getInstance(HMAC_SHA1); mac.init(signingKey); byte[] rawHmac = mac.doFinal(data.getBytes()); String hexBytes = byte2hex(rawHmac); return hexBytes; } private static String byte2hex(final byte[] b) { String hs = ""; String stmp = ""; for (int n = 0; n < b.length; n++) { // 以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。 stmp = (java.lang.Integer.toHexString(b & 0xFF)); if (stmp.length() == 1) { hs = hs + "0" + stmp; } else { hs = hs + stmp; } } return hs; } // /** // * @param args // */ // public static void main(String[] args) { // try { // System.out.println(HMACSHA1.getSignature("abc", "abc")); // } catch (Exception e) { // e.printStackTrace(); // } // } }
相关文章推荐
- php中使用hash_hmac函数实现HMAC-SHA1签名算法的来龙去脉
- java HMACSHA1与php hash_hmac 函数
- 使用函数递归实现基于PHP和MySQL的动态树型菜单[转]
- 使用vim开发php,tag实现类 函数 变量跳转
- 使用ob系列函数实现PHP网站页面静态化
- PHP图片处理之使用imagecopyresampled函数实现图片缩放例子
- PHP使用原生函数实现文件上传及下载
- 约瑟夫环问题的 PHP 实现--使用 PHP 数组内部指针操作函数
- paip.函数方法回调机制跟java php python c++的实现
- php中使用array_filter()函数过滤空数组的实现代码
- PHP hash_hmac 加密算法的使用
- java实现数组逆序的算法 使用函数两个参数
- PHP调用JAVA的实现_JavaBridge.jar的使用
- Java对PHP服务器hmac_sha1签名认证方法的匹配实现
- 使用函数递归实现基于php和MySQL的动态树型菜单
- PHP调用JAVA的实现_JavaBridge.jar的使用
- Java对PHP服务器hmac_sha1签名认证方法的匹配实现
- 使用相关函数实现PHP处理分页
- PHP图片处理之使用imagecopyresampled函数实现图片缩放例子
- Java对PHP服务器hmac_sha1签名认证方法的匹配实现 的另一种方式