【JAVA工具类】util封装1-2

AES加密解密

前端写法:

import CryptoJS from 'crypto-js/crypto-js'

// 默认的 KEY 与 iv 如果没有给
const KEY = CryptoJS.enc.Utf8.parse("1234567890123456");
const IV = CryptoJS.enc.Utf8.parse('1234567890123456');
/**
 * AES加密 :字符串 key iv  返回base64 
 */
export function Encrypt(word, keyStr, ivStr) {
   
  let key = KEY
  let iv = IV

  if (keyStr) {
   
    key = CryptoJS.enc.Utf8.parse(keyStr);
    iv = CryptoJS.enc.Utf8.parse(ivStr);
  }

  let srcs = CryptoJS.enc.Utf8.parse(word);
  var encrypted = CryptoJS.AES.encrypt(srcs, key, {
   
    iv: iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.ZeroPadding
  });
 // console.log("-=-=-=-", encrypted.ciphertext)
  return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);

}
/**
 * AES 解密 :字符串 key iv  返回base64 
 *
 */
export function Decrypt(word, keyStr, ivStr) {
   
  let key  = KEY
  let iv = IV

  if (keyStr) {
   
    key = CryptoJS.enc.Utf8.parse(keyStr);
    iv = CryptoJS.enc.Utf8.parse(ivStr);
  }

  let base64 = CryptoJS.enc.Base64.parse(word);
  let src = CryptoJS.enc.Base64.stringify(base64);

  var decrypt = CryptoJS.AES.decrypt(src, key, {
   
    iv: iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.ZeroPadding
  });

  try{
   
    var decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
    return decryptedStr.toString();
  }catch(e){
   
    return word;
  }
  
}

引入:

import {
   Decrypt, Encrypt} from '@/utils/cryptojs'

后端写法:

package cn.ffcs.util;

/**
 * AES 128bit 加密解密工具类
 * @author chenshw
 */

import org.apache.commons.codec.binary.Base64;

import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;


public class AesEncryptUtil {
   
     
    //使用AES-128-CBC加密模式,key需要为16位,key和iv可以相同!
    private static String KEY = "1234567890123456";
     
    private static String IV = "1234567890123456";

    /**
     * 通用解密方法
     * @param data 要解密的数据
     * @param key  解密key
     * @param iv 解密iv
     * @return 解密的结果
     * @throws Exception
     */
    public static String desEncryptTY(String data) throws Exception {
   
        try {
   
            byte[] encrypted1 = new Base64().decode(data);

            Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
            SecretKeySpec keyspec = new SecretKeySpec(KEY.getBytes(), "AES");
            IvParameterSpec ivspec = new IvParameterSpec(IV.getBytes());

            cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec);

            byte[] original = cipher.doFinal(encrypted1);
            String originalString = new String(original);
            return originalString;
        } catch (Exception e) {
   
            e.printStackTrace();
            return null;
        }
    }

    /**
     * 加密方法
     * @param data  要加密的数据
     * @param key 加密key
     * @param iv 加密iv
     * @return 加密的结果
     * @throws Exception
     */
    public static String encrypt(String data, String key, String iv) throws Exception {
   
        try {
   
 
            Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");//"算法/模式/补码方式"NoPadding PkcsPadding
            int blockSize = cipher.getBlockSize();
 
            byte[] dataBytes = data.getBytes();
            int plaintextLength = dataBytes.length;
            if (plaintextLength % blockSize != 0) {
   
                plaintextLength = plaintextLength + (blockSize - (plaintextLength % blockSize));
            }
 
            byte[] plaintext = new byte[plaintextLength];
            System.arraycopy(dataBytes, 0, plaintext, 0, dataBytes.length);
 
            SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");
            IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());
 
            cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec);
            byte[] encrypted = cipher.doFinal(plaintext);
 
            return new Base64().encodeToString(encrypted);
 
        } catch (Exception e) {
   
            e.printStackTrace();
            return null;
        }
    }
 
    /**
     * 解密方法
     * @param data 要解密的数据
     * @param key  解密key
     * @param iv 解密iv
     * @return 解密的结果
     * @throws Exception
     */
    public static String desEncrypt(String data, String key, String iv) throws Exception {
   
        try {
   
            byte[] encrypted1 = new Base64().decode(data);
 
            Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
            SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");
            IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());
 
            cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec);
 
            byte[] original = cipher.doFinal(encrypted1);
            String originalString = new String(original);
            return originalString;
        } catch (Exception e) {
   
            e.printStackTrace();
            return null;
        }
    }
     
    /**
     * 使用默认的key和iv加密
     * @param data
     * @return
     * @throws Exception
     */
    public static String encrypt(String data) throws Exception {
   
        return encrypt(data, KEY, IV);
    }
     
    /**
     * 使用默认的key和iv解密
     * @param data
     * @return
     * @throws Exception
     */
    public static String desEncrypt(String data) throws Exception {
   
        return desEncrypt(data, KEY, IV);
    }
     
     
     
    /**
    * 测试
    */
    public static void main(String args[]) throws Exception {
   
 
        String test1 = "yytTest1,19961228@ffcs,"+System.currentTimeMillis();
        String test =new String(test1.getBytes(),"UTF-8");
        String data = null;
        String key =  KEY;
        String iv = IV;
        // /g2wzfqvMOeazgtsUVbq1kmJawROa6mcRAzwG1/GeJ4=
        data = encrypt(test, key, iv);
        System.out.println("数据:"+test);
        System.out.println("加密:"+data);
        String jiemi =desEncryptTY(data).trim();
        System.out.println("解密:"+jiemi);
         
 
    }
     
}

检测rtsp流

public static boolean checkRtsp(String url) {
   
		String strRegex = "^(rtsp://)" + "([A-Za-z0-9]+:[A-Za-z0-9]+@)?" + "(([0-9]{1,3}\\.){3}[0-9]{1,3})"
				+ "(:[0-9]{1,5})?" + "((/?)|(/[0-9A-Za-z_!~*'().;?:@&=+$,%#-]+)+/?)$";
		Pattern pattern = Pattern.compile(strRegex);
		Matcher matcher = pattern.matcher(url);
		if (matcher.matches())
			return true;
		else
			return false;
	}

遍历-iterator

JSONObject赋值

public static void addJSON(JSONObject source, JSONObject add) {
   
	java.util.Iterator<String> iterator = add.keySet().iterator();
	while (iterator.hasNext()) {
   
		String key = (String) iterator.next();
		source.put(key, add.get(key));
		}
	}

日期转换

public class DateUtil
{
   
	private static String YYYY_MM_DD = "yyyy-MM-dd";
	private static String YYYY_MM_DD_HH_mm = "yyyy-MM-dd HH:mm";
	private static String YYYY_MM_DD_HH_mm_ss = "yyyy-MM-dd HH:mm:ss";
	private static String YYYYMMDDHHmmssSSS = "yyyyMMddHHmmssSSS";
	private static String YYMMDDHHmmss = "yyyyMMddHHmmss";
	private static String HH_mm_ss = "HH:mm:ss";
	private static String DD = "dd";
	private static String EEEE = "EEEE";
	
	public static String formatStr_yyyyMMddHHmmssS = "yyyy-MM-dd HH:mm:ss.S";
	public static String formatStr_yyyyMMddHHmmss = "yyyy-MM-dd HH:mm:ss";
	public static String formatStr_yyyyMMddHHmmss1 = "yyyyMMddHHmmss";
	public static String formatStr_yyyyMMddHHmm = "yyyy-MM-dd HH:mm";
	public static String formatStr_yyyyMMddHH = "yyyy-MM-dd HH";
	public static String formatStr_yyyyMMdd = "yyyy-MM-dd";
	public static String[] formatStr = {
   formatStr_yyyyMMddHHmmss, formatStr_yyyyMMddHHmm, formatStr_yyyyMMddHH, formatStr_yyyyMMdd};
	
	/**
	 * 日期格式化-将<code>Date</code>类型的日期格式化为<code>String</code>型
	 * 
	 * @param date
	 *            待格式化的日期
	 * @param pattern
	 *            时间样式
	 * @return 一个被格式化了的<code>String</code>日期
	 */
	public static String format(Date date, String pattern) {
   
		if (date == null)
			return "";
		else
			return getFormatter(pattern).format(date);
	}
	
	public static Date getLastMonth(Date date){
   
		Calendar calendar = Calendar.getInstance(); //得到日历
		calendar.setTime(date);
		calendar.add(Calendar.MONTH, -1);//得到前一个月	
		return calendar.getTime();
	}
	
	public static Date getNextMonth(Date date){
   
		Calendar calendar = Calendar.getInstance(); //得到日历
		calendar.setTime(date);
		calendar.add(Calendar.MONTH, +1);//得到后一个月					
		return calendar.getTime();		
		
		//Calendar.WEEK_OF_YEAR
	}
	public static Date getNextWeak(Date date){
   
		Calendar calendar = Calendar.getInstance(); //得到日历
		calendar.setTime(date);
		calendar.add(Calendar.WEEK_OF_YEAR, +1);//得到一个礼拜后				
		return calendar.getTime();		
		
		//Calendar.WEEK_OF_YEAR
	}
	public static Date getNextDay(Date date){
   
		Calendar calendar = Calendar.getInstance(); //得到日历
		calendar.setTime(date);
		calendar.add(Calendar.DAY_OF_MONTH, +1);//得到一个礼拜后				
		return calendar.getTime();		
		
		//Calendar.WEEK_OF_YEAR
	}
	
	public static Date getdatebyyearweak(int year,int weak){
   
		Calendar calendar = Calendar.getInstance(); //得到日历
		calendar.set(Calendar.YEAR, year);
		calendar.set(Calendar.WEEK_OF_YEAR,weak);
		calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
		return calendar.getTime();		
	}
	
	
	public static String weakOfyear(Date date){
   
		Calendar calendar = Calendar.getInstance(); //得到日历
		calendar.setTime(date);
		return calendar.get(Calendar.YEAR)+"-"+calendar.get(Calendar.WEEK_OF_YEAR);
	}
	
	public static String yearmonth(Date time){
   
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
		return format.format(time);	
	}
	
	public static Date getLast3Hour(Date date){
   
		Calendar calendar = Calendar.getInstance(); //得到日历
		calendar.setTime(date);
		calendar.add(Calendar.HOUR, -3);//得到前一个月	
		return calendar.getTime();
	}
	
	
	/**
	 * 获取一个简单的日期格式化对象
	 * 
	 * @return 一个简单的日期格式化对象
	 */
	private static SimpleDateFormat getFormatter(String parttern) {
   
		return new SimpleDateFormat(parttern);
	}

	
	public static String forYMD(Date date)
	{
   
		SimpleDateFormat format = new SimpleDateFormat(YYYY_MM_DD);
		return format.format(date);
	}
	
	public static String forEEEE(Date date)
	{
   
		SimpleDateFormat format = new SimpleDateFormat(EEEE);
		return format.format(date);
	}
	
	public static String forAll(Date date)
	{
   
		SimpleDateFormat format = new SimpleDateFormat(YYYYMMDDHHmmssSSS);
		return format.format(date);
	}
	
	public static String forRandom(Date date)
	{
   
		SimpleDateFormat format = new SimpleDateFormat(YYMMDDHHmmss);
		Random random=new Random();
		return format.format(date)+random.nextInt(100);
	}
	
	public static String forFull(Date date)
	{
   
		SimpleDateFormat format = new SimpleDateFormat(YYYY_MM_DD_HH_mm_ss);
		return format.format(date);
	}
	
	public static String forHms(Date date)
	{
   
		SimpleDateFormat format = new SimpleDateFormat(HH_mm_ss);
		return format.format(date);
	}
	
	public static String forDay(Date date)
	{
   
		SimpleDateFormat format = new SimpleDateFormat(DD);
		return format.format(date);
	}
	
	public static Date StringToDateFull(String date)
	{
   
		SimpleDateFormat format = new SimpleDateFormat(YYYY_MM_DD_HH_mm_ss);
		try
		{
   
			return format.parse(date);
		}
		catch (ParseException e)
		{
   
			e.printStackTrace();
			return null;
		}
	}
	
	public static Date StringToDateYMD(String date)
	{
   
		SimpleDateFormat format = new SimpleDateFormat(YYYY_MM_DD);
		try
		{
   
			return format.parse(date);
		}
		catch (ParseException e)
		{
   
			e.printStackTrace();
			return null;
		}
	}
	
	public static int toAny(String type, String date)
	{
   
		SimpleDateFormat format = new SimpleDateFormat(type);
		try
		{
   
			return Integer.parseInt(format.format(StringToDateFull(date)));
		}
		catch (Exception e)
		{
   
			e.printStackTrace();
			return 0;
		}
	}
	
	public static Date getYesterday()
	{
   
		Calendar cal=Calendar.getInstance();
        cal.add(Calendar.DATE,-1);
        Date yesterday=cal.getTime();
        return yesterday;
	}
	
	public static Date getTomorrow()
	{
   
		Calendar cal=Calendar.getInstance();
        cal.add(Calendar.DATE,1);
        Date tomorrow = cal.getTime();
        return tomorrow;
	}
	
	
	public static int timeBetween(String beginStr, String endStr)
	{
   
	    Date begin = StringToDateFull(beginStr);
	    Date end = StringToDateFull(endStr);
	    long between=(end.getTime()-begin.getTime())/1000;

	    long day1=between/(24*3600);
//	    long hour1=between%(24*3600)/3600;
//	    long minute1=between%3600/60;
//	    long second1=between%60/60;
	    return (int) day1;
	}

	/**
	 * 比较时间大小
	 * @param beginStr
	 * @param endStr
	 * @return
	 */
	public static boolean compare(String beginStr
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值