JustryDeng 5 anni fa
parent
commit
77ef9149fd

+ 7 - 0
class-winter-core/src/main/java/winter/com/ideaaedi/classwinter/executor/EncryptExecutor.java

@@ -832,6 +832,13 @@ public class EncryptExecutor {
                 }
                 
             }
+            // 5. 密码不能包含空格或者逗号
+            if (!StrUtil.isBlank(password)) {
+                this.password = this.password.trim();
+                if (password.contains(Constant.WHITE_SPACE) || password.contains(",")) {
+                    throw new ClassWinterException("password cannot contain whitespace or comma.");
+                }
+            }
             
             // ---- 构建EncryptExecutor对象
             File originFile = new File(originJarOrWar);

+ 2 - 1
class-winter-core/src/main/java/winter/com/ideaaedi/classwinter/util/StrUtil.java

@@ -111,12 +111,13 @@ public final class StrUtil {
     public static Set<String> strToSet(String str) {
         Set<String> set = new HashSet<>();
         if (!StrUtil.isBlank(str)) {
-            str = str.replace(" ", "");
+            str = str.trim();
             String[] arr = str.split(",");
             for (String item : arr) {
                 if (StrUtil.isEmpty(item)) {
                     continue;
                 }
+                item = item.trim();
                 set.add(item);
             }
         }

+ 44 - 0
class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/Password_Test.java

@@ -0,0 +1,44 @@
+package winter.com.ideaaedi.classwinter;
+
+import winter.com.ideaaedi.classwinter.author.JustryDeng;
+import winter.com.ideaaedi.classwinter.util.BashUtil;
+import winter.com.ideaaedi.classwinter.util.PathUtil;
+
+/**
+ * 测试password
+ * <p>
+ *     password: 非必填
+ * </p>
+ * @author {@link JustryDeng}
+ * @since 2021/6/12 14:34:45
+ */
+public class Password_Test {
+    
+    public static void main(String[] args) {
+        // 杀下进程(以保证端口没有被占用)
+        BashUtil.killProcessByPorts("8080");
+        
+        String projectRootDir = PathUtil.getProjectRootDir(AlreadyProtectedLibs_Test.class);
+        String originJarOrWar = projectRootDir + "boot-jar.jar";
+        String includePrefix = "com";
+        String password = "pwd123";
+    
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-1.0.0.jar"
+                + " originJarOrWar=" + originJarOrWar
+                + " includePrefix=" + includePrefix
+                + " password=" + password
+                + " debug=" + true
+                ;
+        // 加密
+        BashUtil.runBashAndPrint(startBat);
+    
+    
+        String encryptedJar = originJarOrWar.replace(".jar", "-encrypted.jar");
+    
+        // 解密
+        // String javaagentArgs = "";
+        // String javaagentArgs = "=debug=true";
+        String javaagentArgs = "=debug=true,password=" + password;
+        BashUtil.runBashAndPrint(String.format("java -javaagent:%s%s -jar %s", encryptedJar, javaagentArgs, encryptedJar));
+    }
+}

BIN
class-winter-core/src/test/resources/class-winter-core-1.0.0.jar