package com.hqsf.hqsfapp.pos.front.utils; import java.io.UnsupportedEncodingException; import java.security.Key; import java.security.KeyFactory; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.PrivateKey; import java.security.spec.PKCS8EncodedKeySpec; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; /** * 加密方式工具类 */ public class EncryUtil { /** * 加密Map集合中的数据,先将参数中Map集合改成TreeMap在拼成key=value形式后加密 * * @param map * @return */ public static Map<String, String> getSignStr(Map<String, String> map) { if (map != null) { StringBuffer sb = new StringBuffer(); TreeMap<String, String> treeMap = new TreeMap<String, String>(); Set<String> map_set = map.keySet(); Iterator<String> iterator = map_set.iterator(); while (iterator.hasNext()) { String keyString = (String) iterator.next(); String valueString = (String) map.get(keyString); treeMap.put(keyString, valueString); } Set<Map.Entry<String, String>> tree_set = treeMap.entrySet(); Iterator<Map.Entry<String, String>> it = tree_set.iterator(); while (it.hasNext()) { Map.Entry<String, String> entry = it.next(); String k = (String) entry.getKey(); String v = (String) entry.getValue(); sb.append(k + "=" + v + "&"); } try { String signString = MD5(sb.toString(), "utf-8"); map.put("sign", signString); } catch (Exception e) { e.printStackTrace(); } return map; } else { return null; } } /** * MD5加密 * * @param message 要进行MD5加密的字符串 * @return 加密结果为32位字符串 */ public static String MD5(String message) { MessageDigest messageDigest = null; StringBuffer md5StrBuff = new StringBuffer(); try { messageDigest = MessageDigest.getInstance("MD5"); messageDigest.reset(); messageDigest.update(message.getBytes("UTF-8")); byte[] byteArray = messageDigest.digest(); for (int i = 0; i < byteArray.length; i++) { if (Integer.toHexString(0xFF & byteArray[i]) .length() == 1) md5StrBuff.append("0") .append(Integer.toHexString(0xFF & byteArray[i])); else md5StrBuff.append(Integer .toHexString(0xFF & byteArray[i])); } } catch (Exception e) { e.printStackTrace(); } return md5StrBuff.toString(); } public static String MD5Sign(String sign) { char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; try { byte[] btInput = sign.getBytes("utf-8"); // 获得MD5摘要算法的 MessageDigest 对象 MessageDigest mdInst = MessageDigest.getInstance("MD5"); // 使用指定的字节更新摘要 mdInst.update(btInput); // 获得密文 byte[] md = mdInst.digest(); // 把密文转换成十六进制的字符串形式 int j = md.length; char str[] = new char[j * 2]; int k = 0; for (int i = 0; i < j; i++) { byte byte0 = md[i]; str[k++] = hexDigits[byte0 >>> 4 & 0xf]; str[k++] = hexDigits[byte0 & 0xf]; } return new String(
加密工具类(包含MD5和AES)
最新推荐文章于 2024-08-06 17:27:21 发布
这是一个Java实现的加密工具类,包括MD5和AES加密方法。MD5方法支持不同字符集的加密,而AES方法提供了加密和解密功能,使用了ECB模式和PKCS5Padding填充。此外,类中还有SHA1加密方法以及RSA私钥加密方法。
摘要由CSDN通过智能技术生成