RSA+AES实现接口验签和参数加密( 三 )

sort(Map map) {if (map == null) {return null;}Map result = new TreeMap<>((Comparator) (o1, o2) -> {return o1.compareTo(o2);});result.putAll(map);return result;}/*** 组合参数** @param map* @return 如:key1Value1Key2Value2....*/public static String groupStringParam(Map map) {if (map == null) {return null;}StringBuffer sb = new StringBuffer();for (Map.Entry item : map.entrySet()) {if (item.getValue() != null) {sb.append(item.getKey());if (item.getValue() instanceof List) {sb.append(JSON.toJSONString(item.getValue()));} else {sb.append(item.getValue());}}}return sb.toString();}/*** bean转map* @param obj* @return*/public static Map bean2Map(Object obj) {if (obj == null) {return null;}Map map = new HashMap<>();try {BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();for (PropertyDescriptor property : propertyDescriptors) {String key = property.getName();// 过滤class属性if (!key.equals("class")) {// 得到property对应的getter方法Method getter = property.getReadMethod();Object value = getter.invoke(obj);if (StringUtils.isEmpty(value)) {continue;}map.put(key, value);}}} catch (Exception e) {e.printStackTrace();}return map;}public static void main(String[] args) throws Exception {System.out.println("公钥加密======私钥解密");String str = "Longer程序员";byte[] enStr = RSAUtil.encryptByPublicKey(str, publicKey);String miyaoStr = HexUtils.bytesToHexString(enStr);byte[] bytes = HexUtils.hexStringToBytes(miyaoStr);String decStr = RSAUtil.decryptByPrivateKey(bytes, privateKey);System.out.println("加密前:" + str + "nr解密后:" + decStr);System.out.println("nr");System.out.println("私钥签名======公钥验证");String sign = RSAUtil.sign(str.getBytes(), privateKey);System.out.println("签名:nr" + sign);boolean flag = RSAUtil.verify(str.getBytes(), publicKey, sign);System.out.println("验签结果:nr" + flag);}jackson工具类import com.fasterxml.jackson.databind.JAVAType;import com.fasterxml.jackson.databind.ObjectMapper;import lombok.extern.slf4j.Slf4j;import org.codehaus.jackson.type.TypeReference;import org.springframework.util.StringUtils;import java.io.IOException;import java.util.ArrayList;import java.util.List;/** * @author: Longer * @date: 2020/8/23 * @description: Jackson转换工具类 */@Slf4jpublic class JacksonUtil {private static ObjectMapper objectMapper = new ObjectMapper();/*** 对象转换成json** @param obj* @param <T>* @return*/public static <T> String beanToJson(T obj) {if (obj == null) {return null;}try {return obj instanceof String ? (String) obj : objectMapper.writeValueAsString(obj);} catch (Exception e) {log.error("beanToJson error", e);e.printStackTrace();return null;}}/*** 将JSON字符串根据指定的Class反序列化成Java对象 。** @param jsonJSON字符串* @param pojoClass Java对象Class* @return 反序列化生成的Java对象* @throws Exception 如果反序列化过程中发生错误,将抛出异常*/public static Object decode(String json, Class<?> pojoClass)throws Exception {try {return objectMapper.readValue(json, pojoClass);} catch (Exception e) {throw e;}}/*** 将JSON字符串根据指定的Class反序列化成Java对象 。** @param jsonJSON字符串* @param reference 类型引用* @return 反序列化生成的Java对象* @throws Exception 如果反序列化过程中发生错误,将抛出异常*/public static Object decode(String json, TypeReference<?> reference) throws Exception {try {return objectMapper.readValue(json, reference.getClass());} catch (Exception e) {throw e;}}/*** 将Java对象序列化成JSON字符串 。** @param obj 待序列化生成JSON字符串的Java对象* @return JSON字符串* @throws Exception 如果序列化过程中发生错误,将抛出异常*/public static String encode(Object obj) throws Exception {try {return objectMapper.writeValueAsString(obj);} catch (Exception e) {throw e;}}/*** 对象转换成格式化的json** @param obj* @param <T>* @return*/public static <T> String beanToJsonPretty(T obj) {if (obj == null) {return null;}try {return obj instanceof String ? (String) obj : objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj);} catch (Exception e) {log.error("beanToJsonPretty error", e);e.printStackTrace();return null;}}/*** 将json转换成对象Class** @param str* @param clazz* @param <T>* @return*/public static <T> T jsonToBean(String str, Class<T> clazz) {if (StringUtils.isEmpty(str) || clazz == null) {return null;}try {return clazz.equals(String.class) ? (T) str : objectMapper.readValue(str, clazz);} catch (Exception e) {log.error("jsonToBean error", e);e.printStackTrace();return null;}}/*** 将json转换为对象集合** @param str* @param clazz* @param <T>* @return*/public static <T> List<T> jsonToBeanList(String str, Class<T> clazz) {if (StringUtils.isEmpty(str) || clazz == null) {return null;}JavaType javaType = getCollectionType(ArrayList.class, clazz);try {return objectMapper.readValue(str, javaType);} catch (IOException e) {log.error("jsonToBeanList error", e);e.printStackTrace();return null;}}public static JavaType getCollectionType(Class<?> collectionClass, Class<?>... elementClasses) {return objectMapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);}}


推荐阅读