Vì vậy, tôi đã viết một nhỏ và, từ những gì tôi nghĩ ban đầu, phương pháp dễ dàng trong C#. phương pháp tĩnh này có nghĩa là để được sử dụng như một máy phát điện mật khẩu gợi ý đơn giản, và mã trông như thế này:Chức năng C# tĩnh của tôi đang chơi trò chơi với tôi ... hoàn toàn lạ!
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;
}
tôi gọi chức năng này như sau:
var randomPassword = StringHelper.CreateRandomPassword(5, "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890");
Bây giờ, phương pháp này hầu như luôn luôn trả về các chuỗi ngẫu nhiên như "AAAAAA", "BBBBBB", "888888" v.v., ở đây tôi nghĩ nó sẽ trả về các chuỗi như "A8JK2A", "82mOK7", v.v.
Tuy nhiên, đây là phần khó hiểu; Nếu tôi đặt một điểm ngắt và bước qua đường lặp này bằng dòng, tôi sẽ nhận lại đúng loại mật khẩu. Trong 100% các trường hợp khác, khi Im không gỡ lỗi, nó cho tôi crap như "AAAAAA", "666666", v.v.
Làm cách nào có thể? Bất kỳ đề xuất được đánh giá rất nhiều! :-)
BTW, hệ thống của tôi: Visual Studio 2010, C# 4.0, ASP.NET MVC 3 RTM dự án w/ASP.NET Development Server. Chưa thử nghiệm mã này trong bất kỳ môi trường nào khác.
Tôi không biết liệu nó có gây ra vấn đề của bạn hay không, nhưng có thể bạn không muốn tạo một trường hợp ngẫu nhiên mới trên mỗi lần lặp. Bạn nên làm điều này một lần trước khi vòng lặp. Phương thức khởi tạo mặc định của Random sử dụng Environment.TickCount làm một hạt giống. Ngoài ra, giá trị mặc định của bạn cho nguồn không có ý nghĩa nhiều vì tôi nghĩ chuỗi rỗng sẽ gây ra lỗi trong cuộc gọi đến Chuỗi con. –
Bạn nói đúng, ông Putty! Ban đầu tôi đã có chuỗi "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" được đặt ở đó. Cảm ơn! – CoderBang