И если CryptoJS.SHA512("hello") возвращает корректный хэш строки "hello", то уже i = CryptoJS.SHA512(i) хэширует не строку hello, а инстанс объекта CryptoJS.
Ну и сформулирую вопрос более широко: как мне добиться того, чтобы результат кода исполняемого на C++ был идентичен результату кода исполненного на JS?
- Никак. Если каждая новая итерация хеширует не строку, а обьект, то и результат в жс и крестах будет разный, потому что хешируют они разные вещи. Если хотите добиться одинакового результата, хешируйте не обьект а строку.