Sha1 гекс UUID - использовать в качестве токена доступа - PullRequest
0 голосов
/ 19 января 2019

Я пишу приложение Go OAuth, в котором я генерирую UUID, использую его в качестве accessToken и возвращаю его клиенту.Я не хочу сохранять голый accessToken в БД, потому что он действителен в течение длительного времени. Поэтому я генерирую хеш с помощью Sha1 и сохраняю его, как показано ниже

import "github.com/pborman/uuid"
accessToken := uuid.NewRandom()
mac := hmac.New(sha1.New, mysecretkey)
mac.Write([]byte(accessToken)
signed := mac.Sum(nil)
accessTokenDB hex.EncodeToString(signed)

Используя uuid, так как accessToken дает мнеочень низкая вероятность столкновения.Я хочу знать, даст ли accessTokenDB такую ​​же очень низкую вероятность столкновения или нет.Я сохраняю accessTokenDB в столбце с уникальным индексом.

1 Ответ

0 голосов
/ 19 января 2019

Для хороших зашифрованных сообщений или контрольных сумм вероятность коллизии практически невозможна.

Хорошие криптографические и контрольные алгоритмы создают зашифрованные сообщения, которые неотличимы от случайности. Все, что меньше, означает, что что-то из исходного сообщения выживает. Это означает, что любой данный токен доступа с равной вероятностью сопоставляется с любым возможным зашифрованным сообщением. Все, что меньше, позволит злоумышленнику угадать сообщение.

Криптографическая стойкость HMAC зависит от криптографической стойкости базовой хеш-функции, размера ее хеш-вывода, а также размера и качества ключа.

Пока он точно не сломан, безопасность SHA-1 была значительно подорвана . Вы должны использовать SHA-256 или лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...