购物分享网站流量排名,做义工旅行有哪些网站,手机网站制作费,北京网站维护一般价格多少任务#xff1a;
接到一个任务#xff0c;调用对方的接口#xff0c;内容和密码#xff0c;需要使用md5进行加密#xff0c;再发送请求。
参数说明#xff1a; 参数名称 说明 备注 timespan 时间戳 格式为yyyyMMddHHmmss pwd 密码 此处用原始密码时间戳做MD5加…任务
接到一个任务调用对方的接口内容和密码需要使用md5进行加密再发送请求。
参数说明 参数名称 说明 备注 timespan 时间戳 格式为yyyyMMddHHmmss pwd 密码 此处用原始密码时间戳做MD5加密32位大写格式 msgfmt 编码类型 选填如果不填默认为GBK可以选填GBK或者UTF8/UTF-8 content 内容 做base64编码操作,编码方式使用msgfmt中的方式如果msgfmt有值的话 处理
bast64编码处理 md5
import org.apache.commons.codec.digest.DigestUtils;public class Md5Utils {/*** param text 明文* param key 密钥* return 密文*/public static String md5(String text, String key) throws Exception {// 加密后的字符串String md5str DigestUtils.md5Hex(text key);System.out.println(MD5加密后的字符串为: md5str);return md5str;}/*** 直接加密* param text 明文* return* throws Exception*/public static String md5(String text) throws Exception {// 加密后的字符串String md5str DigestUtils.md5Hex(text);System.out.println(MD5加密后的字符串为: md5str);return md5str;}/*** 直接加密后变成大写* param text 明文* return* throws Exception*/public static String md5Upper(String text) throws Exception {// 加密后的字符串String md5StrUp DigestUtils.md5Hex(text).toUpperCase();System.out.println(MD5加密后大写的字符串为: md5StrUp);return md5StrUp;}public static void main(String args[]) throws Exception {String currentTimeSuffix DatesUtils.getCurrentTimeSuffix();String pwd 042556;md5(pwd, currentTimeSuffix);String pwdStr 04255620230525112132;String pwdMdStr md5Upper(pwdStr);System.out.println(pwdMdStr);}
}时间处理
DatesUtils
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.commons.lang3.time.DateUtils;
import java.text.ParseException;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;
public class DatesUtils {private static String datePattern yyyy-MM-dd;private static String dateHourPattern yyyy-MM-dd HH;private static String dateTimePattern yyyy-MM-dd HH:mm:ss;private static String dateTimePatternSSSXXX yyyy-MM-ddTHH:mm:ss.SSSXXX;private static String dateTimeSuffixPattern yyyyMMddHHmmss;private static String zeroTime 00:00:00;private static String endTime 23:59:59;public static String format(Date date, String pattern) {if (date null)return ;return DateFormatUtils.format(date, pattern);}public static String format(Date date, String pattern, TimeZone timeZone) {if (date null)return ;return DateFormatUtils.format(date, pattern, timeZone);}public static String formatDate(Date date) {if (date null)return ;return DateFormatUtils.format(date, datePattern);}public static String formatDate(Date date, TimeZone timeZone) {if (date null)return ;return DateFormatUtils.format(date, datePattern, timeZone);}public static String formatDateTime(Date date) {if (date null)return ;return DateFormatUtils.format(date, dateTimePattern);}public static String formatDateTime(Date date, TimeZone timeZone) {if (date null)return ;return DateFormatUtils.format(date, dateTimePattern, timeZone);}public static Date parseDate(String str) {if (StringUtils.isBlank(str))return null;try {return DateUtils.parseDate(str, datePattern);} catch (ParseException e) {e.printStackTrace();}return null;}public static Date parseDateTime(String str) {if (StringUtils.isBlank(str))return null;try {return DateUtils.parseDate(str, dateTimePattern);} catch (ParseException e) {e.printStackTrace();}return null;}public static Date parseDateTime(String str, String dateTimePattern) {if (str null)return null;try {return DateUtils.parseDate(str, Locale.CHINESE, dateTimePattern);} catch (ParseException e) {e.printStackTrace();}return null;}public static Date formatDateTimeZero(Date date) {String formatDate formatDate(date);return parseDateTime(formatDate zeroTime);}public static Date formatDateTimeEnd(Date date) {String formatDate formatDate(date);return parseDateTime(formatDate endTime);}public static Date getCurDateTime() {Date date new Date();String curDate DateFormatUtils.format(date, dateTimePatternSSSXXX);return DatesUtils.parseDateTime(curDate, dateTimePatternSSSXXX);}public static Date getFirstOfHour(Date date) {String formatDate format(date, dateHourPattern);return parseDateTime(formatDate :00:00);}public static Date getLastOfHour(Date date) {String formatDate format(date, dateHourPattern);return parseDateTime(formatDate :59:59);}public static Date getFirstOfDay(Date date) {String formatDate format(date, datePattern);return parseDateTime(formatDate zeroTime);}public static Date getLastOfDay(Date date) {String formatDate format(date, datePattern);return parseDateTime(formatDate endTime);}/*** 获取指定日期所在月的第一天* param date 日期* return 所在月的第一天*/public static Date getFirstOfMonth(Date date) {//获取当前月第一天Calendar calendar Calendar.getInstance();calendar.setTime(date);calendar.add(Calendar.MONTH, 0);calendar.set(Calendar.DAY_OF_MONTH, 1);//设置为1号,当前日期既为本月第一天return formatDateTimeZero(calendar.getTime());}/*** 获取指定日期所在月的第最后一天* param date 日期* return 最后一天*/public static Date getLastOfMonth(Date date) {//获取当前月最后一天Calendar calendar Calendar.getInstance();calendar.setTime(date);calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));return formatDateTimeEnd(calendar.getTime());}/*** 获取当年的第一天*/public static Date getCurrentFirstOfYear() {Calendar currCal Calendar.getInstance();int currentYear currCal.get(Calendar.YEAR);return getFirstOfYear(currentYear);}/*** 获取当年的最后一天*/public static Date getCurrentLastOfYear() {Calendar currCal Calendar.getInstance();int currentYear currCal.get(Calendar.YEAR);return getLastOfYear(currentYear);}/*** 获取某年第一天日期* param year 年份* return Date*/public static Date getFirstOfYear(int year) {Calendar calendar Calendar.getInstance();calendar.clear();calendar.set(Calendar.YEAR, year);return calendar.getTime();}/*** 获取某年第一天日期* param date 日期* return Date*/public static Date getFirstOfYear(Date date) {int year Integer.parseInt(String.format(%tY, date));return formatDateTimeZero(getFirstOfYear(year));}/*** 获取某年最后一天日期* param year 年份* return Date*/public static Date getLastOfYear(int year) {Calendar calendar Calendar.getInstance();calendar.clear();calendar.set(Calendar.YEAR, year);calendar.roll(Calendar.DAY_OF_YEAR, -1);return calendar.getTime();}/*** 获取某年最后一天日期* param date 日期* return Date*/public static Date getLastOfYear(Date date) {int year Integer.parseInt(String.format(%tY, date));return formatDateTimeEnd(getLastOfYear(year));}/*** 计算两个日期之间的时间差到秒* param start 开始日期* param end 结束日期* return Long*/public static Long getDiffDatesToSec(Date start, Date end) {long startTime start.getTime();long endTime end.getTime();return (endTime - startTime) / 1000;}public static Date addDay(Date start, Integer day) {Calendar calendar Calendar.getInstance();calendar.setTime(start);calendar.add(Calendar.DATE, day);return calendar.getTime();}public static Date addMonth(Date start, Integer month) {Calendar calendar Calendar.getInstance();calendar.setTime(start);calendar.add(Calendar.MONTH, month);return calendar.getTime();}public static Long getRemainMilOneDay(Date date) {Calendar calendar Calendar.getInstance();calendar.setTime(date);calendar.add(Calendar.DAY_OF_MONTH, 1);calendar.set(Calendar.HOUR_OF_DAY, 0);calendar.set(Calendar.MINUTE, 0);calendar.set(Calendar.SECOND, 0);calendar.set(Calendar.MILLISECOND, 0);Long seconds (calendar.getTime().getTime() - date.getTime());return seconds;}public static Long getDiffDays(Date start, Date end) {Long day (parseDate(formatDate(end)).getTime() - parseDate(formatDate(start)).getTime())/ (1000 * 60 * 60 * 24);return day;}public static String getCurrentTimeSuffix() {Date now new Date();return format(now, dateTimeSuffixPattern);}public static void testDifSec() {System.out.println(before year);Date beffore parseDateTime(2012-10-10 12:00:00);Date after parseDateTime(2012-10-10 12:00:50);Long diffDatesToSec getDiffDatesToSec(beffore, after);System.out.println(diffDatesToSec);}public static void main(String args[]) {String format getCurrentTimeSuffix();System.out.println(format);}
} 请求内容处理 public void sendNoticeConent(JSONObject userInfo, String content){ String pwd MapUtils.getString(userInfo, pwd);String timespan DateUtils.getCurrentTimeSuffix();MultiValueMapString, String params new LinkedMultiValueMap();params.put(pwd, Collections.singletonList(Md5Utils.md5(pwd, timespan)));params.put(timespan, Collections.singletonList(timespan));params.put(content, Collections.singletonList(Base64Utils.encode(content))); params.put(msgfmt, Collections.singletonList(UTF-8)); // 跟encode保持一致// 发送请求} 总结 MD5Message Digest Algorithm 5是一种常用的哈希算法用于将任意长度的数据转换为固定长度的哈希值。它具有以下特色特点 1、不可逆性MD5算法是一种单向哈希函数即无法通过哈希值反推出原始数据。这意味着即使知道哈希值也无法直接得到原始数据的内容。因此MD5被广泛应用于密码存储等场景增加了数据的安全性。 2、高速性相对于其他哈希算法如SHA-1或SHA-256MD5算法具有较高的计算速度。这使得MD5在处理大量数据时能够提供较快的计算效率适用于需要频繁计算哈希值的场景。 3、固定长度输出MD5算法的输出固定为128位的哈希值无论原始数据的长度如何输出都是固定长度的。这为比较和存储哈希值提供了方便同时也为验证数据完整性提供了基础。 4、广泛应用由于MD5算法的特点它被广泛应用于数据校验、密码存储、数字签名等领域。例如在网络传输中可以使用MD5校验和来验证文件的完整性在用户登录系统时可以使用MD5加密存储密码增加密码的安全性。 5、容易实现MD5算法的实现相对简单算法流程清晰明了。这使得开发人员能够轻松地将MD5算法集成到自己的应用程序中提供数据的哈希计算和校验功能。 需要注意的是由于MD5算法存在一些安全性问题如碰撞攻击和彩虹表破解等它已经不再被推荐作为密码存储的安全选择。在安全敏感的场景中建议使用更强大的哈希算法如SHA-256。