0

我需要打乱我们拥有的 UAT 数据库中所有用户的名称和登录名。(由于数据保护法)

但是,有一个问题。

测试人员仍然需要能够使用散列登录名登录

因此,如果用户登录名是“Jesse.J.James”,那么哈希应该类似于

Ypois.X.Qasdf

即大致相同的长度,点在同一个地方

因此 MD5、sha1 等将不适合,因为它们会创建非常长的字符串,并且还会添加自己的特殊字符,例如 + 和 =,验证正则表达式不允许使用这些字符。

所以我正在寻找一些关于如何实现这一目标的建议

我想我需要推出自己的哈希算法

有人做过类似的事情吗?

我正在使用 c# 但我想这对算法并不那么重要

多谢

添加 -

感谢所有的答案。我认为我有责任在不需要做的时候使用“哈希”这个词来造成混乱

4

9 回答 9

10

测试人员不应以合法用户身份登录。这显然违反了您正在从事的任何数据保护法案的不可否认性要求。

系统不应允许任何人使用散列值登录。这违背了散列的全部目的!

很抱歉,我没有回答您的具体问题,但我真的认为应该重新评估您的整个测试系统。

添加:

JPLemme 下面的评论清楚地说明了你在做什么,恐怕我完全误解了(大概就像那些投票给我的人一样)。

部分混淆是基于这样一个事实,即哈希通常用于加密密码,因此没有人可以发现另一个人的密码是什么,包括那些在系统上工作的人。也就是说,显然是错误的上下文(现在我明白了为什么你要散列用户名而不仅仅是密码)。正如 JPLemme 所指出的,您实际上正在使用一个完全独立的并行系统,其中实时数据已被复制和匿名化,并且使用散列(和加盐!)密码的安全登录过程不会受到干扰。

在这种情况下,WW 在下面的回答更相关,我建议大家将您的投票投给他/​​她。对不起,我误解了。

于 2008-10-06T01:20:00.333 回答
8

您不需要散列数据。您应该将其随机化,使其与原始数据无关。

例如,更新所有登录名,并将每个字母替换为另一个随机字母。

于 2008-10-06T01:25:08.420 回答
4

我认为您在这里采取了错误的方法。哈希的想法是它是单向的,没有人应该能够使用该哈希来访问系统(如果他们可以,那么您可能仍然违反了数据保护法。此外,测试人员不应该使用真实账户,除非这些账户是他们自己的。

您应该让测试人员在单独的环境中使用模拟帐户。通过在单独的环境中使用模拟账户,向测试人员提供账户信息是没有危险的。

于 2008-10-06T01:17:53.397 回答
1

一般来说,不建议使用自己的加密/散列算法。现有的算法做他们做的事情是有原因的。

要么给测试人员一个为他们散列用户名的访问路径,要么让他们复制/粘贴 SHA-1 散列,真的会这么糟糕吗?

于 2008-10-06T01:20:40.940 回答
1

根据定义,哈希是单向的。

如果您要保护的只是随意阅读数据(因此加密级别很低),请执行一些简单的操作,例如转置密码(不同字符之间的 1-1 映射——A 变为 J,B 变为'-', ETC)。或者甚至只是将所有内容移一格(IBM 成为 HAL)。

但请务必认识到,这绝不是隐私或安全的保证。如果这些是您正在寻找的品质,那么根据定义,您不能让测试人员冒充真实用户。

于 2008-10-06T01:29:26.150 回答
1

Did this recommendation go through your organization's auditing department? You might want to talk to them if not, it's not at all clear the scheme you're using protects your organization from liability.

于 2008-10-06T01:48:32.273 回答
0

为什么不对可以识别个人的数据使用测试数据生成器呢?

在数据库中创建测试数据

于 2008-10-06T01:19:21.363 回答
0

为您提供更多信息:

我需要测试一个 DTS 包,它将系统的所有用户从一个文本文件导入我们的数据库。我将获得实时数据。

然而,一旦数据在数据库中,它必须被打乱,这样对普通读者来说没有意义,但允许测试人员登录到系统

于 2008-10-06T01:22:26.193 回答
0

感谢所有的答案。我认为您几乎可以肯定我们的测试策略是错误的是正确的。

我会看看我是否可以改变那些权力的想法

于 2008-10-06T01:37:16.070 回答