Работа с несколькими DBS параллельно и потребностью инициализировать некоторые записи с хешированными паролями. В MS SQL server
существуют удобные функции, которые позволяют хешировать на лету:
HashBytes('SHA1', CONVERT(nvarchar(32), N'admin'))
Есть ли существует подобная функция с SQLite
?
В противном случае, который является самым легким обходным решением (таким как выбор из SQL server
и так или иначе вставьте его в SQLite
таблицы)?
Предпочтительный алгоритм хеширования SHA1
и пароли хранятся в a BLOB
столбец.
Обновление: Я использую язык C# в текущем проекте.
В SQLite3 нет такой функции.
Но вы можете определить пользовательскую функцию, например, с помощью sqlite3_create_function
если вы используете интерфейс C, и реализовать SHA-1 с ее помощью. (Но если у вас программируемый интерфейс, возможно, вы можете просто SHA-1 пароль вне SQL движка)
Вы также можете попробовать найти / создать расширение и загрузить с помощью функции load_extension
, но у меня нет опыта в этом.
Edit:
System.Data.SQLite
в C#. SQLite не поставляется с SHA1, но его относительно легко добавить. Вы не сказали, какой язык используете, но вы можете посмотреть документацию на C для create_function и sqlite3_result . Вы также можете взглянуть на этот пример того, как добавить SHA1 в SQLite с помощью Ruby.
В System.Data.SQLite они называются пользовательскими функциями. Вы можете посмотреть этот пример на главном сайте.
Насколько мне известно, SQLite не имеет встроенных функций хеширования.
Существует способ добавить пользовательские функции в SQLite, но, вероятно, будет проще, если вы просто вычислите хэш SHA1 в своей программе и сохраните его в SQlite.
Создание пользовательских функций для SQLite в некоторой степени зависит от API и языка, который вы используете. У меня есть опыт создания функций SQLite только из Python.