1

暗号化に keyczar を使用する REST Web サービスを作成しています。公開鍵と秘密鍵の両方を生成し、src/main/resources/RSA に配置しました。

エンクリプターをインスタンス化するには、ファイルの場所を渡す必要がありますCrypter crypterPrivate = new Crypter(PATH_RSA + "/private");が、war ファイルを展開するときに RSA フォルダーの場所に問題があります。

InputStream のようにグーグルで検索したものをいくつか試しましたが、RSAフォルダーの場所以外のファイルを渡したくないので、この場合ではありません。/WEB-INF/classes/RSAまた、(warファイルにある場所です)のようないくつかの異なるフォルダーを試しました。

任意のヒント?ありがとうございました

4

3 に答える 3

2

keyczar がそのキーの場所の URL を取得できるthis.getClass().getResource("/RSA/private")場合、適切な URL が提供されます。ネイティブファイルパスが必要な場合は、使用する必要があります

ServletContext ctx = // ...
String pathToKey = ctx.getRealPath("/WEB-INF/classes/RSA/private");

を正確に取得する方法はServletContext、ツールキットによって異なります。これは、デプロイ時に WAR ファイルがディスク上で展開されている場合にのみ機能することに注意してください。アプリが圧縮された WAR ファイルから直接実行されている場合は機能しません。

于 2013-01-15T10:48:17.100 に答える
0

Keyczar の Java バージョンがこの機能をサポートしていないことは確かですが、誰かが問題トラッカーに小さなパッチを送信して追加したと思います。

http://code.google.com/p/keyczar/issues/detail?id=55

KeyczarClassLoaderReader reader = new KeyczarClassLoaderReader(PATH_RSA + "/private");
Crypter crypterPrivate = new Crypter(reader);
于 2013-01-15T18:55:39.797 に答える
0

クラスパス経由でこのファイルにアクセスできます。

URL resourceUrl = URL.class.getResource("/WEB-INF/classes/RSA");
File resourceFile = new File(resourceUrl.toURI());
于 2013-01-15T10:46:57.910 に答える