java常用数据加密算法
2014-05-10 14:39
127 查看
java的数据加密算法,HmacSHA1,MD5等。java自带了加密的方法类SecretKey。
private static final String MAC_NAME="HmacSHA1"; private static final String ENCODING="UTF-8"; /** *使用HMAC-SHA1签名方法对对encryptText进行签名 *@paramencryptText被签名的字符串 *@paramencryptKey密钥 *@return返回被加密后的字符串 *@throwsException */ public static String HmacSHA1Encrypt(String encryptText, String encryptKey)throws Exception{ byte[] data = encryptKey.getBytes( ENCODING ); // 根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称 SecretKey secretKey = new SecretKeySpec( data, MAC_NAME ); // 生成一个指定 Mac 算法 的 Mac 对象 Mac mac = Mac.getInstance( MAC_NAME ); // 用给定密钥初始化 Mac 对象 mac.init( secretKey ); byte[] text = encryptText.getBytes( ENCODING ); // 完成 Mac 操作 byte[] digest = mac.doFinal( text ); StringBuilder sBuilder = bytesToHexString( digest ); return sBuilder.toString(); } /** * 使用 HMAC-SHA1 签名方法对对e * @param encryptData 被签名的字 * @param encryptKey 密钥 * @return 返回被加密后的字符串 */ public static String hmacSHA1Encrypt( byte[] encryptData, String encryptKey ) throws Exception{ byte[] data = encryptKey.getBytes( ENCODING ); // 根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称 SecretKey secretKey = new SecretKeySpec( data, MAC_NAME ); // 生成一个指定 Mac 算法 的 Mac 对象 Mac mac = Mac.getInstance( MAC_NAME ); // 用给定密钥初始化 Mac 对象 mac.init( secretKey ); // 完成 Mac 操作 byte[] digest = mac.doFinal( encryptData ); StringBuilder sBuilder = bytesToHexString( digest ); return sBuilder.toString(); } /** * 转换成Hex * @param bytesArray */ public static StringBuilder bytesToHexString( byte[] bytesArray ){ if ( bytesArray == null ){ return null; } StringBuilder sBuilder = new StringBuilder(); for ( byte b : bytesArray ){ String hv = String.format("%02x", b); sBuilder.append( hv ); } return sBuilder; } public static String md5(String str) { StringBuilder sb = new StringBuilder(); try { MessageDigest m = MessageDigest.getInstance("MD5"); m.update(str.getBytes("UTF8")); byte bytes[] = m.digest(); for (int i = 0; i < bytes.length; i++) { if ((bytes[i] & 0xff) < 0x10) { sb.append("0"); } sb.append(Long.toString(bytes[i] & 0xff, 16)); } } catch (Exception e) { } return sb.toString(); } public static String createSign(Map<String,String> params,String appkey) throws Exception { String queryString = getString(params); return HmacSHA1Encrypt(queryString,appkey); } // private static String getString(Map<String, String> params) { List<String> sList = new ArrayList<String>(); for(Entry<String,String> entry:params.entrySet()){ sList.add(entry.getKey()+"="+entry.getValue()); } String queryString = Joiner.on("&").join(sList); return queryString; } /** * HmacMD5算法 * @param msg 加密信息 * @param keyString 秘钥 * @return digest 结果 */ public static String hmacMD5(String msg, String keyString) { String digest = null; try { SecretKeySpec key = new SecretKeySpec((keyString).getBytes("UTF-8"), "HmacMD5"); Mac mac = Mac.getInstance("HmacMD5"); mac.init(key); byte[] bytes = mac.doFinal(msg.getBytes("UTF-8")); StringBuffer hash = new StringBuffer(); for (int i = 0; i < bytes.length; i++) { String hex = Integer.toHexString(0xFF & bytes[i]); if (hex.length() == 1) { hash.append('0'); } hash.append(hex); } digest = hash.toString(); } catch (UnsupportedEncodingException | NoSuchAlgorithmException | InvalidKeyException e) { } return digest; }
相关文章推荐
- java中常用的数据加密算法
- java中常用的数据加密算法
- java中常用的数据加密算法
- ACM中java解题常用方法及准则
- java9学习之常用工具增强<二>
- JAVA反射常用方法
- java中String类常用的一些方法
- JAVA软件开发常用英文单词总结一
- 常用排序算法总结---Java实现
- java静态检测工具---常用插件
- Java23种常用设计模式
- java中常用到得设计模式有哪几种?
- java常用的数字证书
- Java基础—基础语法与常用命令
- java中最常用的jar包的用途说明
- java的jsp常用标签
- JAVA开发人员常用在线文档及资料地址
- java常用的类
- 使用JAVA进行ad域身份验证常用属性详解
- Java 中的 StringBuilder 类的常用方法