util封装
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