有时候我们通信的时候要对参数进行签名,以防止在通信过程中被篡改,在Java编程中,对Java对象的属性及其值按照ASCII码顺序获得一个字符串,用来进行签名,那么方法可以按照下面来进行。
直接上代码把
private static String buildSignStr(Object object) {
try {
if (object == null) {
return null;
}
Map map = new HashMap();
if (object instanceof Map) {
if (((Map) object).isEmpty()) {
return null;
}
map = (Map) object;
} else {
for (Field field : object.getClass().getDeclaredFields()) {
field.setAccessible(true);
map.put(field.getName(), field.get(object));
}
}
TreeMap<String, String> treeMap = new TreeMap<>(map);
StringBuffer strBuffer = new StringBuffer();
treeMap.entrySet().forEach(i -> {
if (i.getValue() == null) {
return;
}
strBuffer.append(i.getKey()).append("=").append(String.valueOf(i.getValue())).append("&");
});
String signStr=strBuffer.substring(0, strBuffer.length() - 1));
ret