【问题标题】:Unit testing encrypt/decrypt with some salt located in different code bases使用位于不同代码库中的一些盐进行单元测试加密/解密
【发布时间】:2018-02-22 18:38:59
【问题描述】:

首先我要提到我见过Unit testing of encrypt/decryptUnit testing encryption and decryption in Java

我想通过验证其许可证来保护库。许可证包含最大用户数和到期时间等信息。

我遇到的问题是:

  • 加密器和解密器位于两个不同的代码库中。解密器与库一起打包,但加密器没有,因此很难将它们都放在同一个测试套件中!
  • 加密器中使用了随机盐,因此即使输入相同,加密器每次都会产生不同的输出,我再次无法对结果进行断言。
  • 出于其目的,解密器(使其更难为其注入另一个类)是最终类,它的所有方法都是私有的,除了少数包可访问的入口点。

我不想测试 JCE,但我想测试我的代码:

  • 从加密的许可证中提取盐,
  • 解密加密的许可证,
  • 将输出反序列化为某些包含许可证数据的数据结构,

我是否应该创建代码的克隆,并使用一些更软的访问约束并对其进行测试?那么问题是我没有测试在客户端系统上运行的真实代码。

有没有更好的解决方案来做到这一点?

【问题讨论】:

    标签: java unit-testing encryption jce


    【解决方案1】:

    根据您的描述,我认为单独测试它们没有问题。

    • 加密器和解密器位于两个不同的代码库中。

    如果您单独测试它们,则不是问题。

    • 在加密器中使用了随机盐

    您可以注入一个模拟随机生成器,它会产生相同的结果。

    • 就其目的而言,解密器是一个最终类,它的所有方法都是私有的

    许多测试私有方法的方法可以看到here

    • 从加密的许可证中提取盐

    您所需要的只是一个您知道其盐的加密许可证。

    • 解密加密的许可证

    同样,您可以使用您知道它所解密的许可证。

    • 将输出反序列化为某些包含许可证数据的数据结构,

    不相关,是反序列化代码的单独测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-18
      • 1970-01-01
      • 2016-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-23
      • 2021-07-23
      相关资源
      最近更新 更多