RunJS
The third demo screenshot [1], which contains a toy implementation of AES in CBC mode, is a great example of why cryptography is hard to get right. Implementation is best left to cryptographers.AES-CBC requires a random IV to be used as a nonce on a per-message basis, otherwise the entire scheme breaks. The toy example given on this website uses the deprecated Node.js createCipher [2] API which does not take such an IV. In fact, the docs and runtime even warn that using CBC mode with the createCipher API is dangerous!As the code is currently written, an attacker observing multiple encrypted messages under the same key could probably decrypt all messages![1] https://projects.lukehaas.me/runjs/images/runjs3.png[2] https://nodejs.org/api/crypto.html#crypto_crypto_createciphe...