6

文字列を暗号化したいのですが、標準の Java ライブラリは複雑すぎます。

そこで私はJasypt labriryに目を向けました。使い方も理解するのもとても簡単です。ただし、ライブラリを Eclipse 3.6 にインポートし、「Hello」などの文字列をパスワード「123」で暗号化しようとすると、常にエラーが発生します。何が間違っているのかわかりませんが、Eclipse で他のライブラリを使用している場合にも発生すると思います。

ソース:

import org.jasypt.util.text.BasicTextEncryptor;

public class Main {

    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"));
    }
}

エラーメッセージ:

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
4

1 に答える 1

4

インポートしたライブラリは、 を含む別のライブラリに依存していますorg/apache/commons/lang/exception/NestableRuntimeException。これはApache Commons Lang ライブラリにあります。

実際、http://sourceforge.net/projects/jasypt/files/ から JASYPT をダウンロードした場合、次ファイルを含む lib-folder を含む zip ファイルを取得します。

  • commons-codec-1.1.jar
  • commons-lang-2.1.jar
  • jasypt-1.6.jar

これらすべてをプロジェクトに含める必要があります

私はそれを試してみましたが、あなたの小さなサンプルプログラムは正常に動作します (そして以下を出力します)

Hello World
v09l9j/BIeSoMkQXc2CY0VIJLlLAQTYq

于 2010-10-25T07:58:04.683 に答える