Java tutorial
/** * Copyright (c) 2014, wolaiyee.com. All rights reserved. * wolaiyee.com. Use is subject to license terms. */ package net.yoomai.wechat.utils; import com.google.common.base.Charsets; import com.google.common.hash.Hashing; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.ArrayList; import java.util.Arrays; import java.util.Map; import java.util.Random; /** * ? * * @author Ray & coffeefoam@126.com & http://github.com/coffeefoam * @(#)StringUtils.java 1.0 27/11/2015 */ public class StringUtils { private static final Logger log = LoggerFactory.getLogger(StringUtils.class); /** * ????? * * @param parameters ?map * @param sort ?? * @return */ public static String generateQueryString(Map<String, Object> parameters, boolean sort) { ArrayList<String> list = new ArrayList<String>(); for (Map.Entry<String, Object> entry : parameters.entrySet()) { // log.debug("?{}", entry.getKey()); if (!"".equals(entry.getValue())) { list.add(entry.getKey() + "=" + entry.getValue()); } } String[] arrayToSort = list.toArray(new String[list.size()]); if (sort) { Arrays.sort(arrayToSort, String.CASE_INSENSITIVE_ORDER); } StringBuffer buffer = new StringBuffer(); for (int i = 0; i < list.size(); i++) { buffer.append(arrayToSort[i]); if (i < (list.size() - 1)) { buffer.append("&"); } } log.debug(": {}", buffer.toString()); return buffer.toString(); } /** * ?? * * @param length * @return */ public static String randomString(int length) { String base = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; Random random = new Random(); StringBuffer buffer = new StringBuffer(length); for (int i = 0; i < length; i++) { buffer.append(base.charAt(random.nextInt(base.length()))); } return buffer.toString(); } /** * ???? * * @param params ?ASCII ???? * @param encrypt ? SHA1 MD5 * @return */ public static String signature(String buffer, String encrypt, boolean toUpperCase) { String sign = ""; if ("MD5".equals(encrypt)) { // MD5 sign = Hashing.md5().hashString(buffer, Charsets.UTF_8).toString(); } else if ("SHA1".equals(encrypt)) { // SHA1 sign = Hashing.sha1().hashString(buffer, Charsets.UTF_8).toString(); } if (toUpperCase) { sign = sign.toUpperCase(); } return sign; } /** * ???? * * @param params ?ASCII ???? * @param encrypt ? SHA1 MD5 * @return */ public static String signature(Map params, String encrypt, boolean toUpperCase) { String sign = ""; // ? String buffer = generateQueryString(params, true); // log.debug(" => {}", buffer.toString()); if ("MD5".equals(encrypt)) { // MD5 sign = Hashing.md5().hashString(buffer, Charsets.UTF_8).toString(); } else if ("SHA1".equals(encrypt)) { // SHA1 sign = Hashing.sha1().hashString(buffer, Charsets.UTF_8).toString(); } // log.debug("? <=> {}", sign); if (toUpperCase) { sign = sign.toUpperCase(); } return sign; } }