优化Utility.aes

This commit is contained in:
redkale
2023-06-23 20:22:20 +08:00
parent 06d71bb2bc
commit 94774d917f
3 changed files with 80 additions and 6 deletions

View File

@@ -506,6 +506,29 @@ public final class Utility {
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();
}
/**
* 是否不为空白
*
* @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;
}
/**
* 是否为空
*

View File

@@ -413,12 +413,12 @@ public class XmlReader {
.replace("&gt;", ">").replace("&amp;", "&");
}
protected RuntimeException newException(String msg) {
protected RedkaleException newException(String msg) {
return newException(msg, (Throwable) null);
}
protected RuntimeException newException(String msg, Throwable chain) {
return new RuntimeException((msg == null ? "" : (msg + " "))
protected RedkaleException newException(String msg, Throwable chain) {
return new RedkaleException((msg == null ? "" : (msg + " "))
+ "(line: " + this.lineNumber + ", column: " + this.columnNumber + ", position:" + this.position + ") "
+ (chain == null ? "" : ("caused by: " + chain)));
}

View File

@@ -5,8 +5,11 @@
*/
package org.redkale.test.util;
import org.redkale.util.Reproduce;
import org.redkale.util.Attribute;
import java.nio.charset.StandardCharsets;
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 {
reproduce(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 {
@@ -98,7 +125,8 @@ public class UntilTestMain {
}
e = System.nanoTime() - s;
System.out.println("动态Attribute耗时: " + e);
System.out.println();
System.out.println("TestBean.map: " + Attribute.create(TestBean.class.getDeclaredField("map")).genericType());
System.out.println();
System.out.println();
}
}