リクエストパラメータを暗号化したらシステムエラー

(from osdn.net/users/takeshi0206x)
fess.dicon の encryptedParameterValue を true にし、
リクエストパラメータを以下のように指定したら、システムエラーとなりました。

localhost:8080/fess/search?query=hogehoge&fessRoles=U2FsdGVkX1+m1P/bAXyCO/SIH9w3NPqFYbFVZypjsK4=

fess.out のログの最初の1行名は以下です。

[http-nio-8080-exec-5] ERROR System error occured.
org.codelibs.core.exception.BadPaddingRuntimeException: [ECL0001]Rethrew Given final block not properly padded as a runtime exception.

暗号化は以下の手順で実行しました。

echo “123%0a(ここにロール値)” | openssl bf -e -base64 -k ‘1234567890123456’

暗号化が分かっていないような気がしますが、ご指摘やこれを試してみろということあれば教えていただければと思います。

よろしくお願いいたします。

jdk1.8.0_60
fess-server-9.4.2
OS X10.11.1

(from osdn.net/users/shinsuke)
渡された文字列がデコードできなかったためかとおもいますが

localhost:8080/fess/search?query=hogehoge&fessRoles=U2FsdGVkX1+m1P/bAXyCO/SIH9w3NPqFYbFVZypjsK4=

上記はURLエンコードされたものでもダメだった状況でしょうか?

(from osdn.net/users/takeshi0206x)
[メッセージ #77137 への返信]

上記はURLエンコードされたものでもダメだった状況でしょうか?

試してみました。fessRolesの値だけURLエンコードでいいのですよね。

http://localhost:8080/fess/search?query=hogehoge&fessRoles=U2FsdGVkX1%2Bm1P%2FbAXyCO%2FSIH9w3NPqFYbFVZypjsK4%3D

同様にシステムエラーで、以下のログが出ています。

[http-nio-8080-exec-6] ERROR System error occured.
org.codelibs.core.exception.BadPaddingRuntimeException: [ECL0001]Rethrew Given final block not properly padded as a runtime exception.

これ、Blowfishで暗号化したかどうかなど特に指定は必要ないのですね。
#暗号化に疎くてすみません。

(from osdn.net/users/shinsuke)
デフォルトではblowfishでdecodeしていますが、paddingが合っていないように思います。
opensslコマンドで実行する場合はそのあたりを調整していただく必要があるかと思います。

(from osdn.net/users/takeshi0206x)
[メッセージ #77139 への返信]
普通はopensslコマンド使わないのですね。
PKCS#5が標準のようなのですが明示的に何かpaddingの指定が必要なんですかね。う~む。

(from osdn.net/users/takeshi0206x)
[メッセージ #77140 への返信]
成功例と比較したいなぁ。どっかにサンプルないかなぁ。

(from osdn.net/users/takeshi0206x)
[メッセージ #77136 への返信]

自己レスです。

暗号化は以下の手順で実行しました。

echo “123%0a(ここにロール値)” | openssl bf -e -base64 -k ‘1234567890123456’

なんとかopensslでやろうとしたのですが、諦めてjavaでやってみました。
下記のサイトより、コマンドラインのopensslだと、fessのデコード仕様(java)に合わせるが、自分には無理そうでしたので。

http://blog.dornea.nu/2014/07/01/on-java-openssl-crypto-blowfish-and-stuff/

なので上記サイトにあるソースと、FessCipher.javaを参考に、初めてjavaプログラミングしてみました。
検証は、下記のサイト『blowfish暗号化』を利用させてもらいました。
※ここで暗号化したものをURLエンコードすると成功したので。

http://webtool.morinkey.net/blowfish.html

しかし、作ったプログラムと上記サイトの結果を比べると、
改行コードが入った場合にアンマッチとなりました。

試しに、ソースにハードコートしたらうまくいったので、
コマンドラインで改行コード(\n)など制御コードを取り扱う場合の作法があるのかもしれませんが、
ここまで分かれば十分なので、本件は解決とさせていただきます。

お手数をお掛けしました。
ありがとうございました。