2012-02-15 12 views
0

Grailsプロジェクトの統合テスト中に、暗号化を無効にする方法や、単純なアルゴリズムを使用する方法はありますか?フィールドレベルの暗号化にはかなりのオーバーヘッドがあります。これは必ずしもテストする必要はなく、単にテストを実行するのにかかる時間に追加されます。統合テスト中にGrails Jasyptプラグインの暗号化を無効にするには?

テストフェーズでプラグインを除外することは、マッピングが必要で、コンパイルを中断する可能性があるため、おそらく動作しません。

プレーンテキストや単純なアルゴリズムがうまくいくと思っているのですが、暗号化処理をすべて無視しても構いません。

目的は、テスト中にプラグインのパフォーマンスを低下させることです。

+0

それはPERFヒットの大きなことですか?プラグインを削除して統合テストを実行すると、違いがどれくらいあるのだろうか、それは数%以上ですか?また、暗号化された値が暗号化されていない値よりも長いため、統合テストでオーバーフローの問題が発生するリスクがあります。 –

+0

私は、姓と名が暗号化された小規模なテストを作成しました。暗号化された1000個のオブジェクトの単純なリストを作成すると、私のボックスに3秒かかりますが、暗号化されていないものは0.3秒かかります。レコードを1つだけロードすると、暗号化されていない場合は6msと1msの間で暗号化されます。私たちがやっているすべてのテストでは、それはかなり剃ることができると思う。 – ahanson

+0

オーバーフローの問題は、しかし心に留めておくのが良いことです。 – ahanson

答えて

1

devのkeyObtentionIterationsを無効にすることもできます(設定値)。これは、暗号化プログラムが反復的に暗号を解読して処理を遅らせるため、暗号化プログラムがクラックするのをより困難にする反復回数です。

あなたの設定の変更、これを:

keyObtentionIterations = 1000 

keyObtentionIterations = 1 

に(あなたはそれが設定されている場合は、そうでない場合は、それを追加します)。それは事態を著しく加速させて、オーバーフローの問題がまだテストされるようにしておく必要があります。

もしそれが助けになるのであれば、スピードの違いで答えることができれば、どれくらいスピードアップするのかが分かります。

+0

反復を下げても大きな違いはありませんでした。私は、私が望んでいたパーセンテージではなく、助けになるカスタムの文字列encryptorで遊んでいます。ほとんどのテストで、休止状態のセッションがクリアされていないためだと思います。 – ahanson

0

カテゴリを使用して暗号化をスタブアウトすることができます。しかし、あなたはどれがパーフェクトヒット(カテゴリまたは暗号化)であるかを測定する必要があります。

`クラスEncryptionCategory {

static String decrypt(PBEStringEncryptor obj,String encStr) { 
    return encStr 
} 

static String encrypt(PBEStringEncryptor obj,String str) { 
    return str; 
} 

}`

関連する問題