2012-02-15 71 views
0

有沒有一種方法可以禁用加密,或者在集成測試Grails項目期間可能使用一個簡單的算法?在現場級加密中有相當多的開銷,並不一定需要進行測試,只是增加了運行測試所花費的時間。如何在集成測試期間禁用Grails Jasypt插件加密?

在測試階段排除插件可能不會工作,因爲需要映射並且可能會破壞編譯。

我想純文本或更簡單的算法可能會工作,或者甚至有可能有一個配置忽略加密處理一起嗎?

目標僅僅是在測試期間降低插件的性能。

+0

難道這麼大的PERF命中?我很好奇,如果你刪除插件並運行你的集成測試有多大的差異,是否超過幾個百分點?如果將其關閉(因爲加密值長於未加密的值),您還可能會在集成測試中丟失溢出問題的風險 – 2012-02-16 05:45:21

+0

我已經對加密的第一個/最後一個名稱的作者進行了一些小規模測試,做一個1000個加密對象的簡單列表需要3秒,而未加密的對象需要0.3秒。加載一條記錄時,加密需要6ms對1ms未加密。有了我們所做的所有測試,我認爲它可以削減很多。 – ahanson 2012-02-16 13:27:53

+0

儘管如此,溢出問題仍然值得記住。 – ahanson 2012-02-16 13:35:14

回答

1

一個可以幫助的替代方法是關閉dev中的keyObtentionIterations(它是一個配置值)。這是加密器進行迭代的次數,使其更難以破解,因爲它多次遞歸加密以減慢速度。

在你的配置變化如下:

keyObtentionIterations = 1000 

keyObtentionIterations = 1 

(如果您有它設置,否則將其添加)。這應該會顯着加快速度,並且仍然保持這種狀態,以便溢出問題仍然得到測試。

如果這樣做有幫助,我會好奇聽到有多少東西可以加快速度,如果您可以回覆速度差異。

+0

降低迭代次數並沒有顯着差異。我正在玩一個自定義的字符串加密器,這有助於但不是我希望的百分比。我認爲這是因爲休眠會話在大多數測試中都沒有被清除。 – ahanson 2012-02-17 04:26:47

0

您可以使用Category來刪除加密。但是你必須測量哪一個是全擊(類別或加密)。

'類{EncryptionCategory

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

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

}`