7
votes

Sha1 Haçon dans SQLite: Comment?

Utilisation de plusieurs DBS en parallèle et besoin d'initialiser certains enregistrements avec des mots de passe hachés. Dans MS SQL Server Il existe des fonctions pratiques qui permettent au hasch à la volée: xxx

est une fonction similaire avec sqlite ?

Sinon, qui est la solution de contournement la plus facile (telle que SELECT à partir de SQL Server SQLite Tables)? < P> L'algorithme de hachage préféré est sha1 et les mots de passe sont stockés dans une colonne blob .

mise à jour: J'utilise la langue C # dans le projet actuel.


2 commentaires

SHA-1 n'est pas un cryptage mais une fonction de hachage cryptographique.


SHA1 n'est pas un bon choix pour les mots de passe de hachage, car il s'agit de façons de rapides et rend donc la brute-forçage facile. Regardez des fonctions de dérivation clés telles que BCRYPT ou PBKDF2, ce dernier est intégré à C #, car les bibliothèques BCRYPT sont disponibles.


6 Réponses :


10
votes

Il n'y a pas de cette fonction de ce type intégré à SQLite3.

Mais vous pouvez définir une fonction utilisateur par ex. avec sqlite3_create_function si vous utilisez l'interface C, et mettre en œuvre SHA-1 avec cela. (Mais si vous rencontrez une interface programmable, vous pouvez peut-être simplement SHA-1 le mot de passe en dehors du moteur SQL.)

Vous pouvez également essayer de trouver / créer une extension et une chargement avec Le load_extension < / Code> Fonction , mais je n'ai pas d'expérience à ce sujet.

EDIT:


0 commentaires

4
votes

SQLite ne vient pas avec SHA1, mais il est relativement facile à ajouter. Vous n'avez pas dit quelle langue, vous utilisez, mais vous pouvez consulter la documentation C pour Create_function et SQLITE3_RESULT . Vous pouvez également consulter Exemple de Comment ajouter SHA1 à SQLite en utilisant RUBY.

avec System.Data.SQLite , ils sont appelés fonctions définies par l'utilisateur. Vous pouvez regarder Cet exemple sur le site principal.


0 commentaires

1
votes

Autant que je sache, SQLite n'a pas de fonctions de hachage intégrées.

Il y a une manière pour ajouter des fonctions personnalisées à SQLite, mais c'est probablement plus facile Si vous calculez simplement le hachage SHA1 dans votre programme et stockez-le en SQLite.

Créer des fonctions personnalisées pour SQLite dépend un peu sur l'API et la langue que vous utilisez. Je n'ai que de l'expérience avec la création de fonctions SQLite de Python.


0 commentaires

3
votes

Vous pouvez créer une fonction personnalisée pour SHA1 en C # comme ceci: xxx

Cette fonction peut être appelée des données binaires ou des chaînes. Les chaînes sont hachées dans leur représentation unicode. Cela devrait correspondre à SQL Server.

La fonction peut être appelée comme ceci: xxx


0 commentaires

4
votes

Notant que SQLite a un SHA1 () Extension ajoutée en 2017

https://www.sqlite.org/src/file /ext/misc/sha1.c

Bien que cela puisse ne pas être activé par défaut.


0 commentaires

2
votes

Ce qui suit construit le dernier SQLite avec support de bibliothèque dynamique et compile SHA1 Extension . Il assume également la distribution Linux basée sur Debian:

cd build
  sqlite3 <<< '
.load ./libSqlite3Sha1
select sha1(1);
.exit
  '
  # compare output with:
  echo -n 1 | sha1sum
cd -


1 commentaires

Merci! travaillé comme un charme :)