В моем приложении golang я использую метку времени второго разрешения Unix (сгенерированную с помощью time.Now().UTC().Unix()
) как часть соли в хеш-функции, используемой для аутентификации запроса.
Есть желание сохранить эту временную метку в хранилище данных, где соглашением являются строки временных меток RFC3339 с разрешением в наносекунды, сгенерированные golang Функция RFC3339Nano вместе с хэшем для аутентификации.
Вопрос: существует ли какой-либо риск того, что RFC3339Nano нельзя будет точно преобразовать в исходную временную метку Unix, если позже потребуется повторная аутентификация хэша?
Я знаю, что есть некоторые проблемы с високосными секундами, которые применяются к временным меткам Unix; возможно ли когда-нибудь, что циклический обход RFC3339Nano приведет к другой метке времени, что ошибочно сделает подпись недействительной?
Временная метка RFC3339Nano и временная метка Unix генерируются из одной и той же структуры time.Time.
Я склонен думать, что это сработает, поскольку високосные секунды порождают дополнительную 61-ю секунду в день их появление, которое, как я ожидаю, будет отображаться на ту же отметку времени Unix, что и предыдущая секунда. Однако обратное явно потерпело бы неудачу.