我需要扰乱我们拥有的UAT数据库中所有用户的名称和登录.(因为数据保护法)
然而,有一个问题.
测试人员仍然需要能够使用散列登录名登录
因此,如果用户登录是"Jesse.J.James",那么散列应该是类似的
Ypois.X.Qasdf
即大致相同的长度,点在同一个地方
所以MD5,sha1等不合适,因为它们会创建非常长的字符串,并且还会添加自己的特殊字符,例如+和=,这是验证正则表达式所不允许的.
所以我正在寻找一些如何实现这一目标的建议
我想我需要自己进行散列算法
有人做过类似的事吗?
我正在使用c#,但我想这对算法来说并不那么重要
非常感谢
添加 -
感谢所有的答案.我认为当不需要做的事情时,我使用"哈希"这个词来解决混淆
测试人员不应该以合法用户身份登录.这显然违反了您正在进行的任何数据保护行为的不可否认性要求.
系统不应允许任何人使用散列值登录.这打败了哈希的整个目的!
对不起,我没有回答你的具体问题,但我认为你的整个测试系统应该重新评估.
添加:
JPLemme下面的评论为你所做的事情提供了很多启示,我担心我完全被误解了(大概是那些为我投票的人).
部分混淆是基于这样的事实:哈希通常用于加密密码,这样任何人都无法发现其他人的密码,包括那些在系统上工作的密码.也就是说,显然是错误的上下文(现在我理解你为什么要哈希用户名而不仅仅是密码).正如JPLemme指出的那样,您实际上正在使用一个完全独立的并行系统,实时数据已被复制和匿名化,并且使用散列(和盐渍!)密码的安全登录过程不会受到骚扰.
在这种情况下,WW的答案更具相关性,我建议大家给他/她投票.对不起,我误解了.
您不需要散列数据.您应该随机化它,使其与原始数据无关.
例如,更新所有登录名,并用另一个随机字母替换每个字母.