2012-03-19 46 views
8

Tôi có một dự án mà tôi đã nhận được một số băm MD5 từ 1 đến 2 tỷ, và tôi phải viết một chương trình phân tán lấy số bằng sức mạnh vũ phu. Tôi đã mã hóa thành công chương trình này và nó hoạt động. Tôi đã tự hỏi nếu có một cách để tăng tốc độ thế hệ của băm?C# Tạo thế hệ MD5 nhanh hơn

Đây là chức năng hiện tại của tôi để tạo ra băm:

static string generateHash(string input) 
    { 
     MD5 md5Hasher = MD5.Create(); 
     byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input)); 
     StringBuilder sBuilder = new StringBuilder(); 
     for (int i = 0; i < data.Length; i++) 
     { 
      sBuilder.Append(data[i].ToString("x2")); 
     } 
     return sBuilder.ToString(); 
    } 

Nhờ sự giúp đỡ

+3

Tạo cho họ một lần và sau đó tải chúng từ một tập tin là một ý tưởng rõ ràng. – Jon

+0

Tạo băm trong khi đối tượng MD5 vẫn được xác định có thể sẽ giúp ích. Xác định nó, cho phép nó vứt bỏ, sau đó tái instantiating nó cho thế hệ tiếp theo là tài nguyên nặng. –

Trả lời

9

Bạn có thể sử dụng BitConverter.ToString

static string generateHash(string input) 
{ 
    MD5 md5Hasher = MD5.Create(); 
    byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input)); 
    return BitConverter.ToString(data); 
}