Мне кажется я горожу велосипеды и что-то пропустил, но как реализовать проверку ключа для AES что он верный прежде чем расшифровывать данные, например пользователь указал неверный пароль. Пока что как идея хранить:
password_crypt = AES.encrypt("True Secret Passphrase", "True Secret Passphrase")
а потом делать проверку на стороне клиента которому будет передаваться password_crypt:
"User Secret Passphrase" === AES.decrypt(password_crypt, "User Secret Passphrase") ? "мастер пароль правильный" : "мастер пароль введен некорректно"
Мне кажется я где-то что-то упустил очень важное и всё давно без меня придумали и стандартизовали.
P.S весь алгоритм будет виден пользователю т.к будет еще работа на клиенте в браузере, как сделать проверку так что бы гарантировать пользователю надежность шифрования (снижение стойкости) от взлома в первую очередь с нашей стороны.