Ничего шифровать не нужно. Алгоритм такой
1. Берете
https://github.com/Valve/fingerprintjs2
2. Отправляете результат его работы c каждым запросом
3. Авторизируетесь и получаете токен который на сервере привязан к fingerprint и IP
4. При получении запроса с токеном и fingerprint, проверяете наличие токена в своем хранилище, и соответсвие токена IP и fingerprint которые пришли с клиента
5. Если не прошла проверка, заставляйте авторизироваться снова.
P.S. IP часто динамический. Так что учитывайте это. Например много людей используют мобильный интернет. Плюс нужно понимать что может быть несколько устройств. Пользователь может зайти с планшета, телефона и ПК