Пилю я, значит, некую поделку на правах пет-проджекта. Эдакая телефонная книжка на стероидах. Поскольку русские, украинские и китайские хакеры только и думают, как бы украсть номера моих шлюх, решил я контактные данные хранимых людей держать в базе зашифрованными, и расшифровывать уже в браузере. В качестве ключа — либо пароль, либо производное от него, либо ключ хранится там же в базе, но защищён паролем/ПИНом.
Решил посмотреть, что есть в JS для подобных дел, и для криптографии вообще.
Как я себе это себе представлял: в JS есть стандартная библиотека, которая умеет AES 256 над любыми входными данными. В npm или ещё где-то есть сторонние библиотеки, которые это шифрование используют для решения более высокоуровневых задач (возможно и моей).
Как оказалось: ничего стандартного для шифрования нет и не предвидится. Базовое шифрование нагугливается в сторонних библиотеках, которые либо пилились васянами в 2010-е (а потом им надоело), либо имеют разгромные рецензии о своей небезопасности, либо являются PoC-ами прекрасных решений будущего, либо подходят для очень узких случаев (при этом могут быть так же заброшены и небезопасны). На SO если и дают какие-то ссылки, то сразу со скептическими дисклеймерами, и ссылки ведут примерно на то же самое. Кому очень надо, тот колхозит своё. Всё очень плохо. Подлость, гадость, плейнтекст.
Неужели я единственный человек, которому понадобилось шифрование в JS?
Есть ли более-менее приличное решение?