2017-03-09 103 views
1

我正在编写一个使用登录名和密码连接到服务器的工具。该工具的用户必须在运行时提供工具的登录名和密码,以便能够连接到服务器以获取一些信息。存储加密密码并在运行时解密

但是,我正在对我的工具进行一些集成测试,因此测试应该能够连接到服务器。我可以使用通用服务器的帐户来执行此操作。
但我想自动化这些集成测试,所以我需要将通用凭证存储在某处加密,集成测试在执行时解密它们(即使它们是通用的,它们仍然是证书,所以我是在将它们存储为未加密时不舒服)。

解决这个问题的方法是什么?如果该工具能够解密密码,那么这意味着它将拥有一些主密钥,而且我认为这是错误的。
我应该公开一些我发送加密值的外部服务来解密,这样加密/解密将在该工具之外进行处理吗?

谢谢

+0

什么是你想测试?互联网还在吗?或者你的客户仍然说出正确的协议?或者密码仍然有效?这是你应该首先找到答案的问题。 – wallenborn

+1

也许你可以解释一下你设想一个坏家伙会窃取凭证的场景,因为目前还不清楚你为什么要保护这些测试凭证,或者来自谁。肯定凭证不会在软件的生产版本中出货?那么你是在保护他们不受其他开发者的影如果是这样,他们不能简单地在某处放置断点来查看解密的凭据吗? – PaulG

+0

@wallenborn我正在测试该工具在实时系统之前的行为是否正确(与单元测试存根服务器相比)。 – Xendar

回答

0

我认为这个问题没有真正的解决方案。最后,某处必须是解密密码的算法或密钥。所以我可能会去加密key + obfuscationkey + code in a language that cant be reverse engineered

+0

这就是为什么我想到将加密和解密与工具分开的原因 – Xendar

+0

Speration会很有用,因为java很容易被重新引用。但好混淆也很强 – Ocean15

+0

混淆只会隐藏我的价值(比如用*替换字符),因此无法取回原始值。也许我没有完全明白你的答案呢? – Xendar