using System.Security.Cryptography;
public static void Main()
Console.WriteLine(GetWpaMasterKey("CP", "test.353").ToLower());
public static string GetWpaMasterKey(string pwd, string ssid)
Char[] ssid_chars = ssid.ToCharArray();
byte[] ssidByteResult = new byte[] {0, 0, 0, 0, 0, 0, 0, 0};
ssidByteResult = Encoding.UTF8.GetBytes(ssid_chars);
ssidByteResult = charArray2ByteArray(ssid_chars);
byte[] key = new Rfc2898DeriveBytes(Encoding.UTF8.GetBytes(pwd), ssidByteResult, 4096).GetBytes(32);
return BitConverter.ToString(key).Replace("-", string.Empty);
public static byte[] charArray2ByteArray(char[] chars)
int length = chars.Length;
byte[] result = new byte[length + (8 - length)];
for (int j = 0; j < chars.Length; j++)
result[i++] = (byte)((chars[j] & 0xFF00) >> 8);
result[i++] = (byte)((chars[j] & 0x00FF));