Мы работаем над миграцией баз данных из MSSQL в базу данных PostgreSQL. В ходе этого процесса мы столкнулись с ситуацией, когда в таблице содержится поле пароля типа NVARCHAR, и значение этого поля было преобразовано из типа VARBINARY и сохранено как тип NVARCHAR.
Например: если я выполню
SELECT HASHBYTES('SHA1','Password')`
, затем возвращается 0x8BE3C943B1609FFFBFC51AAD666D0A04ADF83C9D
и, в свою очередь, если это значение преобразуется в NVARCHAR, то возвращается текст в формате "䏉悱゚얿괚浦Њ鴼"
Поскольку мы знаем, что PostgreSQL не поддерживает VARBINARY, мы использовали вместо него BYTEA и возвращаем двоичные данные. Но когда мы пытаемся преобразовать эти двоичные данные в тип VARCHAR, возвращается шестнадцатеричный формат
Например: если тот же оператор выполняется в PostgreSQL
SELECT ENCODE(DIGEST('Password','SHA1'),'hex')
тогда возвращается
8be3c943b1609fffbfc51aad666d0a04adf83c9d
.
Когда мы пытаемся преобразовать этот закодированный текст в тип VARCHAR, он возвращает тот же результат, что и 8be3c943b1609fffbfc51aad666d0a04adf83c9d
Можно ли получить тот же результат, который мы получили с сервера MSSQL? Поскольку они связаны с полями пароля, мы не намерены изменять значения. Подскажите пожалуйста что нужно сделать