MD5+SHA1
public static String signature(String appKey,String appSecret,long clientTime,String version) throws Exception { String pathString = "appKey=" + appKey + "&clientTime=" + clientTime+ "&version=" + version + "&" + appSecret; String data = DigestUtils.md5Hex(pathString); // MD5加密 MessageDigest digest = MessageDigest.getInstance("SHA-1"); byte[] hash = digest.digest(data.getBytes()); // 将字节数组转换成十六进制字符串 StringBuilder hexString = new StringBuilder(); for (byte b : hash) { String hex = Integer.toHexString(0xff & b); if (hex.length() == 1) hexString.append('0'); hexString.append(hex); } return hexString.toString(); }
MD5+盐
String encrypt = GenerateUtil.randomCode(6); String s = DigestUtils.md5Hex(DigestUtils.md5Hex("123456") + encrypt);
MD5-or-HMACSHA256
标签:加密,String,utils,解密,new,sb,data,append,MD5 From: https://blog.csdn.net/javacynchronized/article/details/142461316public static String generateSignature(final Map<String, String> data, String key, SignType signType) throws Exception { Set<String> keySet = data.keySet(); String[] keyArray = keySet.toArray(new String[keySet.size()]); Arrays.sort(keyArray); StringBuilder sb = new StringBuilder(); for (String k : keyArray) { if (k.equals(WXPayConstants.FIELD_SIGN)) { continue; } if (data.get(k).trim().length() > 0) // 参数值为空,则不参与签名 sb.append(k).append("=").append(data.get(k).trim()).append("&"); } sb.append("key=").append(key); if (SignType.MD5.equals(signType)) { return MD5(sb.toString()).toUpperCase(); } else if (SignType.HMACSHA256.equals(signType)) { return HMACSHA256(sb.toString(), key); } else { throw new Exception(String.format("Invalid sign_type: %s", signType)); } }