ECB вирізка і вставка

Напишіть процедуру розбору k=v, як для структурованої кукі. Процедура повинна приймати:

foo=bar&baz=qux&zap=zazzle

… і повертати:

{
  foo: 'bar',
  baz: 'qux',
  zap: 'zazzle'
}

(ну ви знаєте, об’єкт; мені байдуже якщо ви зконвертували його до JSON).

Тепер напішіть функцію яка кодує профіль користувача у цьому форматі, даючи адрес електронної пошти. У вас повинно бути щось таке:

profile_for("foo@bar.com")

… і воно повинно зробити:

{
  email: 'foo@bar.com',
  uid: 10,
  role: 'user'
}

… закодоване як:

email=foo@bar.com&uid=10&role=user

Ваша функція “profile_for” повинно не дозволяти метасимволів кодування (& та =). Проковтніть їх, зробіть ескейпінг, зробіть що бажаєте, але не дозволяйте людям встановити їх електронну пошту як “foo@bar.com&role=admin”.

Тепер, дві більш легкі функції. Сгенеруйте випадковий AES ключ, потім:

  • Зашифруйте кодований профіль користувача під ключем; “надайте” це “нападнику”.
  • Розшифруйте закодований профіль користувача та розберіть його.

Використовуючи лише введені користувачем дані profile_for() (як оракул для створення «дійсних» зашифрованих текстів) і самі зашифровані тексти, створіть профіль із role=admin.