优化Utility.aes
This commit is contained in:
@@ -506,6 +506,29 @@ public final class Utility {
|
|||||||
return str == null || str.isEmpty() || str.isBlank();
|
return str == null || str.isEmpty() || str.isBlank();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否为空白
|
||||||
|
*
|
||||||
|
* @param str 字符串
|
||||||
|
* @param fromIndex 起始位置
|
||||||
|
* @param toIndex 结束位置
|
||||||
|
*
|
||||||
|
* @return 是否为空白
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public static boolean isBlank(String str, int fromIndex, int toIndex) {
|
||||||
|
if (str == null || str.isEmpty()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
for (int i = fromIndex; i < toIndex; i++) {
|
||||||
|
char ch = str.charAt(i);
|
||||||
|
if (ch != ' ' && ch != '\t' && !Character.isWhitespace(ch)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否不为空白
|
* 是否不为空白
|
||||||
*
|
*
|
||||||
@@ -518,6 +541,29 @@ public final class Utility {
|
|||||||
return str != null && !str.isEmpty() && !str.isBlank();
|
return str != null && !str.isEmpty() && !str.isBlank();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否不为空白
|
||||||
|
*
|
||||||
|
* @param str 字符串
|
||||||
|
* @param fromIndex 起始位置
|
||||||
|
* @param toIndex 结束位置
|
||||||
|
*
|
||||||
|
* @return 是否为空白
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public static boolean isNotBlank(String str, int fromIndex, int toIndex) {
|
||||||
|
if (str == null || str.isEmpty()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
for (int i = fromIndex; i < toIndex; i++) {
|
||||||
|
char ch = str.charAt(i);
|
||||||
|
if (ch != ' ' && ch != '\t' && !Character.isWhitespace(ch)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否为空
|
* 是否为空
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -413,12 +413,12 @@ public class XmlReader {
|
|||||||
.replace(">", ">").replace("&", "&");
|
.replace(">", ">").replace("&", "&");
|
||||||
}
|
}
|
||||||
|
|
||||||
protected RuntimeException newException(String msg) {
|
protected RedkaleException newException(String msg) {
|
||||||
return newException(msg, (Throwable) null);
|
return newException(msg, (Throwable) null);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected RuntimeException newException(String msg, Throwable chain) {
|
protected RedkaleException newException(String msg, Throwable chain) {
|
||||||
return new RuntimeException((msg == null ? "" : (msg + " "))
|
return new RedkaleException((msg == null ? "" : (msg + " "))
|
||||||
+ "(line: " + this.lineNumber + ", column: " + this.columnNumber + ", position:" + this.position + ") "
|
+ "(line: " + this.lineNumber + ", column: " + this.columnNumber + ", position:" + this.position + ") "
|
||||||
+ (chain == null ? "" : ("caused by: " + chain)));
|
+ (chain == null ? "" : ("caused by: " + chain)));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,8 +5,11 @@
|
|||||||
*/
|
*/
|
||||||
package org.redkale.test.util;
|
package org.redkale.test.util;
|
||||||
|
|
||||||
import org.redkale.util.Reproduce;
|
import java.nio.charset.StandardCharsets;
|
||||||
import org.redkale.util.Attribute;
|
import java.security.Key;
|
||||||
|
import javax.crypto.Cipher;
|
||||||
|
import javax.crypto.spec.*;
|
||||||
|
import org.redkale.util.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@@ -17,6 +20,30 @@ public class UntilTestMain {
|
|||||||
public static void main(String[] args) throws Throwable {
|
public static void main(String[] args) throws Throwable {
|
||||||
reproduce(args);
|
reproduce(args);
|
||||||
attribute(args);
|
attribute(args);
|
||||||
|
aes(args);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void aes(String[] args) throws Throwable {
|
||||||
|
String mingwen = "我是z前面的";
|
||||||
|
String secret = "after z content.";
|
||||||
|
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
|
||||||
|
Key secureKey = new SecretKeySpec(secret.getBytes(), "AES");
|
||||||
|
IvParameterSpec iv = new IvParameterSpec(secret.getBytes(StandardCharsets.UTF_8));
|
||||||
|
cipher.init(Cipher.ENCRYPT_MODE, secureKey, iv);
|
||||||
|
byte[] bs = cipher.doFinal(mingwen.getBytes());
|
||||||
|
System.out.println("加密后: " + Utility.binToHexString(bs));
|
||||||
|
|
||||||
|
System.out.println(new String(Utility.hexToBin("6166746572207a20636f6e74656e742e")));
|
||||||
|
String miwen = "2a2c3ff3b51205eb80a02e43e0eb0751";
|
||||||
|
secret = "after z content.";
|
||||||
|
byte[] ms = Utility.hexToBin(miwen);
|
||||||
|
cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
|
||||||
|
secureKey = new SecretKeySpec(secret.substring(0, 16).getBytes(), "AES");
|
||||||
|
iv = new IvParameterSpec(secret.substring(0, 16).getBytes(StandardCharsets.UTF_8));
|
||||||
|
cipher.init(Cipher.DECRYPT_MODE, secureKey, iv);
|
||||||
|
bs = cipher.doFinal(ms);
|
||||||
|
System.out.println("解密后: " + new String(bs));
|
||||||
|
System.out.println(Utility.binToHexString(secret.getBytes()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void reproduce(String[] args) throws Throwable {
|
public static void reproduce(String[] args) throws Throwable {
|
||||||
@@ -98,7 +125,8 @@ public class UntilTestMain {
|
|||||||
}
|
}
|
||||||
e = System.nanoTime() - s;
|
e = System.nanoTime() - s;
|
||||||
System.out.println("动态Attribute耗时: " + e);
|
System.out.println("动态Attribute耗时: " + e);
|
||||||
System.out.println();
|
|
||||||
System.out.println("TestBean.map: " + Attribute.create(TestBean.class.getDeclaredField("map")).genericType());
|
System.out.println("TestBean.map: " + Attribute.create(TestBean.class.getDeclaredField("map")).genericType());
|
||||||
|
System.out.println();
|
||||||
|
System.out.println();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user