none
Хранение SHA-256 в Access RRS feed

  • Вопрос

  • Добрый день. В интернете особо ничего не нашел, спрошу здесь. Мне нужно хеш SHA-256 хранить в базе данных. Я так понял при конвертировании массива байт в строку c помощью Text.Encoding.UTF8.GetString() обрежет часть данных, если в последовательности будут иметься некорректные байты. А если использовать Convert.ToBase64String() - она не сохраняется корректно в базу данных. Там она тоже декодируется в текст.

    Вопрос. Можно ли как-то преобразовать строку Base64 или массив байт в текст с сохранением всех байт, что бы можно было без потерь данных сохранить в базу Access? 

    21 января 2021 г. 10:45

Ответы

  • Я просто на другом форуме прочитал, что Access при записи Base64 строки в базу, декодирует ее и, если символ ошибочный - он его пропускает. А поля BINARY в Access нет.

    Не ясно с какой стати Access будет анализировать строки и тем более их во что то "декодировать"? Что то вы странное прочитали. Я в это не верю, но если вам кажется что это возможно, то почему бы не попробовать и убедится что это правда прежде чем выдумывать способы решения потенциально несуществующей проблемы?

    Что до типов, то в официальной документации тип BINARY имеется:

    https://docs.microsoft.com/en-us/sql/odbc/microsoft/microsoft-access-data-types?view=sql-server-ver15

    he following table shows the Microsoft Access data types, data types used to create tables, and ODBC SQL data types.

    MICROSOFT ACCESS DATA TYPES
    Microsoft Access data type Data type (CREATETABLE) ODBC SQL data type
    BIGBINARY[1] LONGBINARY SQL_LONGVARBINARY
    BINARY BINARY SQL_BINARY

    Или у вас какой то древний Access?


    This posting is provided "AS IS" with no warranties, and confers no rights.

    • Помечено в качестве ответа Siompc 22 января 2021 г. 13:49
    21 января 2021 г. 23:00
    Модератор

Все ответы

  • Не совсем понятно в чем проблема...

    Если хэш представлен в виде массива байтов, то можно использовать тип данных BINARY. Тут все работает без преобразований, что записали то и считали.

    Base64 так же будет без проблем работать, только потребуется преобразование в/из него при записи и считывании. Никаких "потерь" при этом не будет, двоичные данные будут храниться в базе виде строки.

    Другой популярный вариант представления хэшей - 16-ричная побайтовая запись где каждый байт печатается в виде двухразрядного 16-ричного числа от 00 до ff и все они сливаются вместе в виде строки. Так же как и в случае Base64 потребуется преобразование при записи/считывании.


    This posting is provided "AS IS" with no warranties, and confers no rights.

    21 января 2021 г. 16:56
    Модератор
  • Я просто на другом форуме прочитал, что Access при записи Base64 строки в базу, декодирует ее и, если символ ошибочный - он его пропускает. А поля BINARY в Access нет.

    21 января 2021 г. 17:25
  • Я просто на другом форуме прочитал, что Access при записи Base64 строки в базу, декодирует ее и, если символ ошибочный - он его пропускает. А поля BINARY в Access нет.

    Не ясно с какой стати Access будет анализировать строки и тем более их во что то "декодировать"? Что то вы странное прочитали. Я в это не верю, но если вам кажется что это возможно, то почему бы не попробовать и убедится что это правда прежде чем выдумывать способы решения потенциально несуществующей проблемы?

    Что до типов, то в официальной документации тип BINARY имеется:

    https://docs.microsoft.com/en-us/sql/odbc/microsoft/microsoft-access-data-types?view=sql-server-ver15

    he following table shows the Microsoft Access data types, data types used to create tables, and ODBC SQL data types.

    MICROSOFT ACCESS DATA TYPES
    Microsoft Access data type Data type (CREATETABLE) ODBC SQL data type
    BIGBINARY[1] LONGBINARY SQL_LONGVARBINARY
    BINARY BINARY SQL_BINARY

    Или у вас какой то древний Access?


    This posting is provided "AS IS" with no warranties, and confers no rights.

    • Помечено в качестве ответа Siompc 22 января 2021 г. 13:49
    21 января 2021 г. 23:00
    Модератор
  • 2019. Не нашел ) Но в любом случае, можно значит сохранять Base64 строку )) Спасибо большое!

    22 января 2021 г. 13:49