• Qu'est-ce que Sqids ?

    Sqids est une petite bibliothèque open-source qui peut produire des identifiants courts, uniques et ayant l'apparence du hasard à partir de nombres.

    Le meilleur moyen de le comprendre est de le considérer comme un convertisseur décimal en hexadécimal, mais avec quelques fonctionnalités supplémentaires.

  • Raccourcir les liens, générer des identifiants uniques pour le suivi, générer des identifiants pour les produits/objets sur un site web (comme le fait YouTube pour les vidéos), générer des identifiants courts pour les SMS, codes de confirmation dans les e-mails, etc.

  • Toute donnée sensible. Les identifiants générés ne sont pas des hachages et pourraient être décodés en nombres. Par exemple, ils pourraient ne pas être un bon choix pour les identifiants d'utilisateurs, car une fois décodés, ils pourraient révéler le nombre d'utilisateurs de votre application.

  • Est-ce que je peux encoder plusieurs nombres en même temps ?

    Oui. Sqids peut encoder un ou plusieurs nombres non négatifs dans un seul identifiant. Il n'y a pas de limite au nombre de nombres que vous pouvez encoder, mais il y a une limite à la taille du nombre que vous pouvez encoder (en fonction du langage d'implémentation).

    Cela est utile pour plusieurs raisons : vous pourriez encoder un horodatage UNIX et créer des identifiants expirant, ou vous pourriez encoder un numéro de fragment de base de données avec une clé primaire et économiser des requêtes supplémentaires à la base de données.

  • Les identifiants générés sont-ils uniques ?

    Oui, les identifiants générés sont uniques pour l'entrée et l'alphabet.

    Gardez à l'esprit que l'alphabet par défaut contient des lettres majuscules et minuscules, donc les identifiants par défaut sont sensibles à la casse.

  • Quelles limitations Sqids a-t-il ?

    Sqids ne peut pas encoder de nombres négatifs.

    La longueur minimale de l'alphabet est de 3 caractères.

    L'alphabet ne peut contenir aucun caractère multibyte.

    Sqids ne peut pas générer d'identifiants jusqu'à une certaine longueur, seulement à partir d'une certaine longueur. La plage du paramètre de longueur minimale est entre 0 et 255.

    Sqids peut tenter de régénérer des identifiants jusqu'à la longueur de l'alphabet, moins un.

  • Comment puis-je rendre mes identifiants uniques ?

    La bibliothèque accepte un alphabet personnalisé à partir duquel elle peut générer des identifiants. Pré-mélangez simplement l'alphabet par défaut qui est fourni.

    Gardez à l'esprit qu'avec suffisamment d'efforts, quelqu'un pourrait rétro-ingénier votre alphabet mélangé, donc ce n'est en aucun cas une technique pour cacher des données sensibles.

  • Comment puis-je mélanger l'alphabet par défaut ?

    L'alphabet par défaut peut être trouvé ici .

    Vous pouvez utiliser n'importe quel outil en ligne de mélange de chaînes ou notre plateforme d'essai .

  • Est-il préférable d'utiliser un alphabet plus court ou plus long ?

    Dépend de votre cas d'utilisation. Un alphabet plus court produira des identifiants plus longs, et un alphabet plus long produira des identifiants plus courts. Vous pouvez utiliser le plateforme d'essai pour voir à quoi pourraient ressembler vos identifiants.

  • Mon alphabet peut-il être composé uniquement de chiffres ?

    Oui. Gardez à l'esprit que les identifiants générés sont toujours des chaînes et peuvent commencer par un zéro.

  • Puis-je utiliser des emojis comme alphabet ?

    Non. Sqids ne prend pas en charge les caractères multibyte pour l'alphabet. Cela inclut les emojis ainsi que de nombreux autres caractères.

  • Pourquoi remplir les identifiants ?

    La bibliothèque peut étendre les identifiants avec des caractères superflus pour les rendre plus longs. C'est utile pour qu'il ne soit pas aussi évident si vous encodez un petit nombre comme 1 ou un grand nombre comme 1000000.

    Le décodage n'est pas affecté.

  • Puis-je rendre les identifiants générés plus longs ?

    Oui, la bibliothèque accepte un paramètre de longueur minimale qui garantit que les identifiants auront au moins cette longueur.

    Veuillez noter qu'il n'y a aucune garantie sur la longueur de vos identifiants, seulement qu'ils ne seront pas plus courts que la longueur que vous spécifiez.

  • Puis-je définir une longueur spécifique pour les identifiants générés ?

    Jusqu'à un certain point.

    Définir une longueur maximale est impossible car tôt ou tard vos identifiants déborderont avec une entrée suffisamment grande. C'est pourquoi seul le paramètre de longueur minimale est pris en charge, et la longueur exacte ou maximale ne l'est pas.

  • Pourquoi utiliser une liste noire ?

    Une liste noire peut empêcher certains mots d'apparaître dans vos identifiants. C'est bénéfique car les identifiants générés sont destinés à apparaître dans des endroits publics, comme l'URL.

    Sqids est livré avec la liste noire par défaut qui contient les mots vulgaires et inappropriés les plus basiques de plusieurs langues. Vous pouvez bien sûr étendre cette liste noire avec vos propres mots.

  • Comment fonctionne la liste noire ?

    La correspondance des mots de la liste noire n'est pas sensible à la casse.

    Les mots courts de moins de 3 caractères ne seront pas bloqués. Les mots de 3 caractères doivent correspondre exactement aux identifiants. Les mots de 4 caractères ou plus déclencheront une correspondance s'ils sont une sous-chaîne de l'identifiant.

    Si les mots de la liste noire contiennent des chiffres (leetspeak), ils ne déclencheront une correspondance que s'ils sont au début ou à la fin de l'identifiant.

  • Quels mots sont dans la liste noire par défaut ?

    La liste noire par défaut contient les mots vulgaires et inappropriés les plus courants de plusieurs langues. Vous pouvez trouver la liste complète ici .

  • Que se passe-t-il lorsque tous les identifiants sont bloqués ?

    Lorsque l'identifiant généré correspond à un mot de la liste noire, la bibliothèque tente de le régénérer.

    Si chaque tentative de régénération échoue, la fonction d'encodage échouera et renverra une erreur. La gestion de cette erreur relève de l'utilisateur.

    Le meilleur moyen de réduire le nombre de tentatives de régénération est d'avoir un alphabet plus long, de ne pas définir de longueur minimale et de fournir une liste noire plus petite. Fournir une liste noire vide désactivera complètement la fonction.

  • Comment vérifier si les identifiants sont valides ?

    Le décodage des identifiants produira généralement une sorte de sortie numérique, mais cela ne signifie pas nécessairement que l'identifiant est canonique. Pour vérifier que l'identifiant est valide, vous pouvez réencoder les nombres décodés et vérifier que l'identifiant correspond.

    La raison pour laquelle cela n'est pas fait automatiquement est que si la liste noire par défaut change à l'avenir, nous ne voulons pas invalider automatiquement l'identifiant qui a été généré dans le passé et qui pourrait maintenant correspondre à un nouveau mot de la liste noire.

  • Que se passe-t-il lorsque la liste noire par défaut est mise à jour ?

    Nous veillerons à mettre à jour le CHANGELOG si la liste noire par défaut change.

    Vous devez tenir compte des scénarios où un nouveau mot pourrait être ajouté à la liste noire par défaut. Dans ce cas, réencoder les nombres peut produire un identifiant différent.

    Le meilleur moyen de garantir que vos identifiants restent cohérents lors de futures mises à jour est de fournir une liste noire personnalisée, même si elle est identique à la liste noire actuelle par défaut.

  • Est-ce que l'encodage de différents nombres peut produire des identifiants identiques ?

    Non, encoder différents nombres produira des identifiants uniques.

    Cependant, en raison de la conception de l'algorithme, le décodage d'identifiants aléatoires peut parfois produire les mêmes nombres. Le meilleur moyen de vérifier si l'identifiant est canonique est simplement de réencoder les nombres décodés et de vérifier que l'identifiant correspond.

  • Qu'est-ce que Hashids ?

    Hashids était la première version de cette bibliothèque sortie vers 2013. Elle produisait également des identifiants courts mais utilisait une méthode légèrement différente.

  • Pourquoi Hashids a-t-il été mis à niveau vers Sqids ?

    Hashids gérait quelques éléments différemment.

    Elle ne prenait pas en charge une liste noire personnalisée, mais s'appuyait plutôt sur les mots vulgaires anglais les plus courants. Elle utilisait également le paramètre salt pour mélanger l'alphabet, ce qui la rendait un peu confuse car la bibliothèque n'avait rien à voir avec le chiffrement. De plus, elle utilisait trop de caractères réservés, ce qui produisait des identifiants plus longs.

    C'est pourquoi nous avons décidé de mettre à niveau et de revoir la marque. L'algorithme a été simplifié, quelques fonctionnalités ont été ajoutées et les dépôts de code sont désormais regroupés sous un même toit .

  • Pourquoi le paramètre salt a-t-il été supprimé ?

    Le paramètre salt était utilisé pour mélanger l'alphabet, et il n'était jamais destiné à être associé à la sécurité. Hashids et Sqids fonctionnent tous deux de manière similaire à la conversion décimale en hexadécimale mais avec quelques ajustements. Il n'y a aucun chiffrement de quelque nature que ce soit, donc pour éviter toute confusion, ce paramètre a été complètement supprimé.

  • Est-ce que Hashids est compatible avec Sqids ?

    Non, Sqids étend les fonctionnalités de Hashids et a des objectifs de conception et des exigences différents ; par conséquent, les identifiants générés ne sont pas compatibles avec Hashids.

  • Comment puis-je effectuer une mise à niveau sûre de Hashids vers Sqids ?

    Comme il n'y a pas de compatibilité entre Hashids et Sqids, il est impossible de simplement remplacer Hashids par Sqids.

    Cependant, vous pouvez fusionner les deux en différenciant quel identifiant appartient à quelle bibliothèque.

    Une des façons de le faire est par la longueur de l'identifiant - si vous passez à Sqids, vous pouvez fournir une longueur minimale plus grande. Une autre façon est d'ajouter manuellement un caractère personnalisé aux identifiants nouvellement générés.

    Enfin, vous pouvez également essayer de décoder un identifiant avec Hashids pour voir s'il est valide. Sinon - décodez et réencodez avec Sqids pour voir si cela fonctionne.

  • Où puis-je trouver les bibliothèques originales Hashids ?

    Chaque implémentation linguistique sur ce site renvoie au dépôt original de Hashids s'il existe.

  • Comment puis-je contribuer ?

    Si vous souhaitez soutenir le projet, nous apprécierions que vous ajoutiez une étoile à nos dépôts sur Github pour plus de visibilité.

    Si vous êtes développeur et ne trouvez pas d'implémentation de Sqids pour un langage particulier, aidez-nous à convertir la bibliothèque. Il en va de même pour un langage de programmation qui n'est pas répertorié.

    Si vous voyez un bogue dans la spécification ou l'une des implémentations, veuillez créer un problème ou une demande de fusion avec une correction suggérée dans le dépôt approprié.

    Si vous parlez plusieurs langues, nous pourrions avoir besoin de votre aide pour ajuster la liste noire et adapter les traductions du site si vous constatez des problèmes.

    Enfin, si vous avez de l'expérience avec Hashids/Sqids, aidez à guider notre communauté en répondant à toute question que quelqu'un pourrait avoir.

  • Comment porter Sqids vers une autre langue ?

    Si vous souhaitez porter Sqids vers l'un des langages suivants (ou un nouveau non répertorié ici) :

    D , Io , Raku , Smalltalk , T-SQL , Tcl , VBA

    Faites une copie du dépôt officiel sur votre compte Github et implémentez la spécification ainsi que tous les tests. Vous pouvez réutiliser l'un des README existants (exemple ).

    Une fois la bibliothèque prête, créez une demande de fusion. Une fois fusionné, nous mettrons à jour le site.

    Si le dépôt n'a pas de mainteneurs actifs, nous serions heureux de vous inviter à gérer le dépôt et à devenir un mainteneur officiel.