123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- package com.ym.mec.collectfee.utils;
- import com.thoughtworks.xstream.XStream;
- import com.thoughtworks.xstream.converters.javabean.BeanProvider;
- import com.thoughtworks.xstream.converters.javabean.JavaBeanConverter;
- import com.ym.mec.collectfee.entity.RequestHead;
- import org.springframework.beans.factory.annotation.Value;
- import java.security.MessageDigest;
- import java.security.NoSuchAlgorithmException;
- import java.util.Random;
- public final class XStreamUtil {
- private XStreamUtil() {
- }
- public static RequestHead getOrdersHead(String body,Integer cmd,String publicKey,Integer uid){
- RequestHead head = new RequestHead();
- head.setMsgId(getRandom(7));
- head.setCmd(cmd);
- if(uid != null){
- head.setUid(uid);
- }
- head.setSign(XStreamUtil.getSign(head, body, publicKey));
- return head;
- }
- public static String getRandom(int length) {
- String base = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
- Random random = new Random();
- StringBuffer sb = new StringBuffer();
- for (int i = 0; i < length; i++) {
- int number = random.nextInt(base.length());
- sb.append(base.charAt(number));
- }
- return sb.toString();
- }
- public static String getSign(RequestHead head,String body,String userSign){
- //msgId+cmd+uid+ts+body+用户密钥/公共密钥
- StringBuffer sb = new StringBuffer(head.getMsgId());
- sb.append(head.getCmd()).append(head.getUid()).append(head.getTs()).append(body).append(userSign);
- return XStreamUtil.encryption(sb.toString()).toLowerCase();
- }
- /**
- * 将包含xml内容的流转换成对�?
- *
- * @param rootNode
- * 根节点名�?
- * @param rootNodeType
- * 根节点类�?
- * @param inputStream
- * �?
- * @return 返回转换后的对象
- */
- @SuppressWarnings("unchecked")
- public static <T> T xmlToObject(String rootNode, Class<T> rootNodeType,
- String body) {
- XStream xStream = new XStream();// 默认用xppDriver
- xStream.autodetectAnnotations(true);
- xStream.alias(rootNode, rootNodeType);// 尽可能的加上,否则会抛CannotResolveClassException异常
- xStream.ignoreUnknownElements();
- // 将xml转换成对�?
- return (T) xStream.fromXML(body);
- }
- /**
- * 将对象转换成xml
- *
- * @param rootNodeName
- * 根节点名�?
- * @param obj
- * 对象�?
- * @return
- */
- public static String objectToXml(String rootNodeName, Object obj) {
- XStream xStream = new XStream();
- xStream.registerConverter(new JavaBeanConverter(xStream.getMapper(),
- new BeanProvider()), XStream.PRIORITY_VERY_LOW);
- xStream.alias(rootNodeName, obj.getClass());
- return xStream.toXML(obj);
- }
- public static String encryption(String body) {
- String re_md5 = new String();
- try {
- MessageDigest md = MessageDigest.getInstance("MD5");
- md.update(body.getBytes());
- byte b[] = md.digest();
- int i;
- StringBuffer buf = new StringBuffer("");
- for (int offset = 0; offset < b.length; offset++) {
- i = b[offset];
- if (i < 0)
- i += 256;
- if (i < 16)
- buf.append("0");
- buf.append(Integer.toHexString(i));
- }
- re_md5 = buf.toString();
- } catch (NoSuchAlgorithmException e) {
- e.printStackTrace();
- }
- return re_md5.toUpperCase();
- }
- }
|