2012-02-15 74 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; 
} 

}`