Did you try to write something like this in java? I've written one on my own and its like atleast 10 times faster. I took a look at your code, seems pretty simple so i dont really know why it is so slow :/
You also generate key that contain characters that make no sense at all.
The hex value of the key contains only values from 00-FF (000-255 in dec).
So you could limit your random characters to 0-9 and A-F.
Each key i have seen so far startet with C6,06,46,86,80,42,02,C2 or 04.
Correct me if I'm wrong