Генерация ключа: random - IV[16] + CRYPTKEYSRC[64] юзерский пароль - PW[x] AESKEY = SHA512(CRYPTKEYSRC+PW) ну и соотвественно CIPHERTEXT = aescrypt(PLAINTEXT, IV... в plaintext есть CRC для проверки валидности расшифрованных данных
Соответственно на устройстве храню: CRYPTKEYSRC[64] + IV[16] + CIPHERTEXT
расшифровка по тому же алгоритму, с помощью смешивания CRYPTKEYSRC+PW и хеширования - получаем ключ для AES дешифруем, проверяем CRC
plaintext юзеру не показываем, это секретные части RSA ключа, просто код возврата - расшифровался ключ или нет (много итераций делать не могу, даже sha512 считается долго, и памяти тоже впритык)
|