使用 JASYPT 进行字符串加密 - Java
-
26-09-2019 - |
题
我想加密一个字符串,但标准 java 库对我来说太复杂了。所以我转向 JASYPT,它的使用和理解非常简单,但是当我将库导入 Eclipse 3.6 并尝试使用密码“123”加密像“Hello”这样的字符串时。它总是会出现错误。我不确定我做错了什么,但我认为当我在 Eclipse 中使用其他库时也会发生这种情况。
来源
import org.jasypt.util.text.BasicTextEncryptor;
public class eMain {
static BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
public static void main(String[] args) {
System.out.println("Hello World");
textEncryptor.setPassword("123");
System.out.println(textEncryptor.encrypt("Hello World"));
}
}
错误:i.imgur.com/vBe8p.png
Eclipse 控制台:
java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at org.jasypt.util.text.BasicTextEncryptor.<init>(BasicTextEncryptor.java:67)
at eMain.<clinit>(eMain.java:4)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang.exception.NestableRuntimeException
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 14 more
进口图书馆i.imgur.com/t9am9.png
解决方案
您导入的库依赖于另一个包含以下内容的库 org/apache/commons/lang/exception/NestableRuntimeException
. 。这位于 Apache Commons Lang 库.
事实上,如果您从 http://sourceforge.net/projects/jasypt/files/ 您将获得一个 zip 文件,其中包含包含以下文件的 lib 文件夹:
- commons-codec-1.1.jar
- commons-lang-2.1.jar
- jasypt-1.6.jar
您应该将所有这些都包含在您的项目中.
我尝试过,你的小示例程序运行良好(并打印以下内容)
Hello World
v09l9j/BIeSoMkQXc2CY0VIJLlLAQTYq
不隶属于 StackOverflow