【问题标题】:How to disable Grails Jasypt plugin encryption during integration tests?如何在集成测试期间禁用 Grails Jasypt 插件加密?
【发布时间】:2012-03-07 04:20:51
【问题描述】:

有没有办法禁用加密,或者在 Grails 项目的集成测试期间可能使用简单的算法?字段级加密有相当多的开销,不一定需要在那时进行测试,只会增加运行测试所需的时间。

在测试阶段排除插件可能不起作用,因为需要映射并且可能会破坏编译。

我认为纯文本或更简单的算法可能会起作用,或者甚至可以让配置忽略加密处理?

目标只是在测试期间减少插件对性能的影响。

【问题讨论】:

  • 它的性能有那么大吗?我很好奇如果你删除插件并运行你的集成测试有多少差异,是否超过百分之几?如果您将其关闭,您还可能会在集成测试中丢失溢出问题(因为加密的值比未加密的长)
  • 我对一位作者的名字/姓氏进行了一些小规模的测试,其中的名字/姓氏已被加密,并且对 1000 个加密对象的简单列表在我的盒子上需要 3 秒,而未加密的等效对象需要 0.3 秒。仅加载一条记录时,加密需要 6ms 而非加密需要 1ms。通过我们正在进行的所有测试,我认为它可以减少很多。
  • 不过,溢出问题值得牢记。

标签: grails jasypt


【解决方案1】:

一种可能会有所帮助的替代方法是关闭 dev 中的 keyObtentionIterations(它是一个配置值)。这是加密器为使其更难破解而进行的迭代次数,因为它会递归加密多次以减慢速度。

在你的配置中改变这个:

keyObtentionIterations = 1000

keyObtentionIterations = 1

(如果你设置了它,否则添加它)。这应该会显着加快速度并保持它,以便仍然测试溢出问题。

如果这确实有帮助,我很想知道如果你能用速度差异回复的话,这能提高多少速度。

【讨论】:

  • 降低迭代次数并没有显着差异。我正在玩一个自定义字符串加密器,它有帮助,但没有达到我希望的百分比。我认为这是因为在大多数测试期间休眠会话没有清除。
【解决方案2】:

您可以使用 Category 来排除加密。但是您必须衡量哪个是性能命中(类别或加密)。

`class EncryptionCategory {

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

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

}`

【讨论】:

    猜你喜欢
    • 2011-06-02
    • 2011-05-05
    • 2011-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-28
    • 1970-01-01
    • 2011-04-30
    相关资源
    最近更新 更多