I just spent 5 hours porting my C++ implementation of the Cantor-Zassenhaus attack on #AES #GCM to JavaScript so I could create some nice demos and explainers for my blog, just to find out at the final step that something completely kills the performance in my JavaScript implementation 😭

Now I either spend another 5 hours benchmarking and optimizing, or just reimplement in #Rust + #WebAssembly 🤔

Either way, back to the drawing board..

Cantor–Zassenhaus algorithm - Wikipedia

Well, another 5 hours later I managed to port it again, this time to Web Assembly + Rust. And tada, factorizing polyomials over F128 in ~200ms in the browser 🎉

Now all that's left is to build the demos and actually write the article I have in mind...​