所以,我写了一个小的,从我最初的想法,在C#中简单的方法.此静态方法旨在用作简单的密码建议生成器,代码如下所示:
public static string CreateRandomPassword(int outputLength, string source = "")
{
var output = string.Empty;
for (var i = 0; i < outputLength; i++)
{
var randomObj = new Random();
output += source.Substring(randomObj.Next(source.Length), 1);
}
return output;
}
Run Code Online (Sandbox Code Playgroud)
我这样调用这个函数:
var randomPassword = StringHelper.CreateRandomPassword(5, "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890");
Run Code Online (Sandbox Code Playgroud)
现在,这个方法几乎总是返回像"AAAAAA","BBBBBB","888888"等随机字符串,我认为它应该返回像"A8JK2A","82mOK7"等字符串.
然而,这里是奇怪的部分; 如果我放置一个断点,并逐行逐步执行此迭代,我会得到正确类型的密码作为回报.在100%的其他情况下,当我没有调试时,它给了我像"AAAAAA","666666"等废话.
这怎么可能?任何建议都非常感谢!:-)
BTW,我的系统:Visual Studio 2010,C#4.0,ASP.NET MVC 3 RTM项目,带ASP.NET开发服务器.尚未在任何其他环境中测试此代码.