Это смотря что за викторина. Одно дело, когда она проверяет знание истории с весёлой фразой в конце. Совсем другое, когда вы разыгрываете мерседес. Взламывается всё, что угодно - главное какой профит будет хакеру.
В принципе,
в первом варианте, ответы можно разбить по цифрам из юникода и хранить в цифрах.
подробнееКаждой цифре можно прибавлять "шаг" (например, число 12) и парсить обратно в символы (это называется "Шифр Цезаря", только не с алфавитом, а с таблицей юникод. 99.9% любителей полазить в f12 уйдут с ничем или получат удовлетворение от "взлома" супернадёжного шифра и получат удовольствие от сайта не меньше, чем от весёлой фразы в конце викторины.
Простая "hello world!" превращается в "104-101-108-108-111-32-119-111-114-108-100-33"
Вот тут накидал пример:
jsfiddle
Во втором случае, вам надо понять, что НЕВОЗМОЖНО что-то спрятать в JS. Потому, что, в конце-концов, весь код целиком загружается в браузер. Любой, самый секретный, самый чудовищно-сложный, шифр как-то преобразуется в обычный текст. Для этого есть функция в вашем приложении. Злоумышленник просто залезет в код и использует вашу функцию для дешифровки.
подробнееПоэтому, всё-же, нужен backend. С backend`а приходит вопрос и варианты ответов. Когда пользователь делает ввод, то на сервер идёт запрос, проверяется пользовательский ввод, и приходит ответ уже от сервера, верен ли ввод пользователя или нет. От сервера может даже сразу прийти страница, куда направлять пользователя, в зависимости от правильности его ввода. Для таких задач и был придуман backend вообще-то...
Ссылки:
String.fromCharCode()
String.prototype.charCodeAt()