发送者对明文进行加密,难度越大解密越慢,迫使接收者必须经过一定时间才能解开密文。目前主流 CPU 每 1 难度用时大约 1 秒。
本程序能耗大,不建议在移动端运行。PC 端建议使用 Chrome,性能更高。如果页面被暂停运行,可尝试放在单独的窗口中。
如何加速解密?单核性能越高,解密速度越快。多核或显卡性能对解密速度无提升。如果用 FPGA 甚至专用芯片解密,速度还能大幅提升。
能否瞬间加密?理论上可以,参考这篇论文,但浏览器未提供相关 API,即使通过 WebAssembly 实现,解密性能仍比被原生低很多,没有必要在网页中解密。因此本程序使用浏览器内置的 PBKDF2 作为延时函数,避免额外开销,但缺点是加密和解密一样慢。当然实际应用时可离线计算,预先生成密钥池,也可达到瞬间加密的效果。