我需要对我们拥有的UAT数据库中所有用户的名称和登录进行加扰。 (因为数据保护法)
然而,有一个问题。
测试人员仍然需要能够使用散列登录名登录
因此,如果用户登录为“Jesse.J.James”,那么散列应该类似于
Ypois.X.Qasdf
即。大致相同的长度,点在同一个地方
所以MD5,sha1等不合适,因为它们会创建非常长的字符串,并且还会添加自己的特殊字符,例如+和=,这是验证正则表达式所不允许的。
所以我正在寻找一些关于如何实现这个的建议
我想我需要自己动摇哈希算法
是谁做过类似的事?我正在使用c#,但我想这对算法来说并不那么重要
非常感谢
已添加
感谢所有答案。当我不需要做什么时,我认为我应该使用“哈希”这个词来解决这个问题。
答案 0 :(得分:10)
测试人员不应该以合法用户身份登录。这显然违反了您正在进行的任何数据保护行为的不可否认性要求。
系统不应允许任何人使用散列值登录。这打败了哈希的整个目的!
对不起,我没有回答您的具体问题,但我认为您的整个测试系统应该重新评估。
<强>增加:强>
以下JPLemme的评论为你所做的事情提供了很多启示,我担心我完全被误解了(大概是那些投票支持我的人)。
部分混淆是基于这样的事实:哈希通常用于加密密码,这样任何人都无法发现其他人的密码,包括那些在系统上工作的密码。也就是说,显然是错误的上下文(现在我理解你为什么要哈希用户名而不仅仅是密码)。正如JPLemme指出的那样,您实际上正在使用一个完全独立的并行系统,实时数据已经被复制和匿名化,并且使用散列(和盐渍!)密码的安全登录过程不会受到骚扰。
在这种情况下,WW的答案更具相关性,我建议大家向他/她投票。对不起,我误解了。
答案 1 :(得分:8)
您不需要散列数据。你应该随机化它,使它与原始数据无关。
例如,更新所有登录名,并用另一个随机字母替换每个字母。
答案 2 :(得分:4)
我认为你在这里采取了错误的做法。哈希的想法是它是单向的,没有人应该能够使用该哈希来访问系统(如果他们可以,那么你可能仍然违反了数据保护法。此外,测试人员不应该使用真实账户除非这些账户是他们自己的账户。
您应该让测试人员在分离的环境中使用模拟帐户。通过在单独的环境中使用模拟帐户,向测试人员提供帐户信息没有任何危险。
答案 3 :(得分:1)
一般来说,建议您使用自己的加密/散列算法。现有算法出于某种原因做了他们的工作。
要么为测试人员提供一个为他们提供用户名的访问路径,还是只让他们复制/粘贴SHA-1哈希,真的会这么糟糕吗?
答案 4 :(得分:1)
根据定义,哈希是单向的。
如果你想要保护的只是随意阅读数据(所以加密级别很低),做一些简单的事情就像转置密码(1-1将不同字符映射到另一个 - A变成J ,B变成' - '等)。或者甚至只是将所有东西都换成一个(IBM变成HAL)。
但请注意,这绝不是对隐私或安全的保证。如果这些都是您正在寻找的品质,那么根据定义,您无法让测试人员模仿真实用户。
答案 5 :(得分:1)
此建议是否通过贵组织的审核部门?如果没有,你可能想与他们交谈,你所使用的方案一点也不清楚,保护你的组织免于承担责任。
答案 6 :(得分:0)
为什么不将测试数据生成器用于可以识别个人的数据?
答案 7 :(得分:0)
为您提供更多信息:
我需要测试一个DTS包,它将系统的所有用户从文本文件导入到我们的数据库中。我将获得实时数据。
但是,一旦数据在数据库中,它必须被加扰,以便它对随意读者没有意义,但允许测试人员登录系统
答案 8 :(得分:0)
感谢所有答案。我认为你的测试策略错误几乎肯定是正确的。
我会看看我是否可以改变那些力量的思想