En entreprise, il y a souvent des cas où on veut protéger des données sensibles. Le plus souvent, on archive les données dans des fichiers cryptés ; en cas de besoin, on peut décrypter ces archives pour y accéder, et en attendant on est rassuré sur le fait que personne…
Comment calculer la complexité d’un mot de passe et comment choisir un mot de passe
L’imaginaire collectif nous implante l’idée qu’un mot de passe doit être long (composé de beaucoup de caractères) et complexe (composé de beaucoup de caractères différents) pour être de bonne qualité. On va essayer de voir ce que ça représente exactement. Quelles sont les attaques sur les mots de passe ?…
Crypter un fichier sous Linux avec OpenSSL, GPG ou scrypt
Sous Linux, nous avons la chance d’avoir plusieurs outils qui peuvent être utilisés pour crypter des fichiers. Nous allons voir comment le faire avec les outils suivants : Il y a un principe que je vais appliquer dans les trois cas : la passphrase (le mot de passe) d’encryption ne…
Plus ça change, plus c’est pareil. L’éternel recommencement, de la voiture électrique au développement web
Première anecdote Je suis tombé sur un article très intéressant sur le blog officiel de Google. Il y est fait référence à un article du journal Electrical World, qui dit en substance : « Les raisons fondamentales pour lesquelles la voiture électrique n’a pas atteint la popularité qu’elle mérite sont (1) l’échec…
Enregistrer le terminal en vidéo avec asciinema
Il peut arriver qu’on ait besoin de partager une vidéo servant à montrer ce qu’on voit dans son terminal. Personnellement, j’ai eu besoin notamment pour illustrer de la documentation. Plus récemment, avec mon équipe nous avons fait un exercice de programmation dont le but était d’implémenter le jeu de la…
Réflexions sur les dépendances
Quand on parle des dépendances d’un développement, on parle principalement des bibliothèques externes sur lesquelles le projet est basé, et dont il dépend. Pour que le projet fonctionne, il faut que ces dépendances soient satisfaites, que le code source du projet y ait accès lorsqu’il en a besoin. J’ai en…
Compiler du C/C++ de manière vraiment statique et faire de la cross-compilation facilement
Quand on développe en C/C++, on compile par défaut des exécutables qui sont liés dynamiquement aux bibliothèques qu’ils utilisent, à commencer par la bibliothèque standard du C (la libc), mais aussi d’autres bibliothèques nécessaires. Et quand on compile, c’est naturellement pour l’architecture (le couple processeur/système d’exploitation) sur laquelle on est.…
Choisir un algorithme pour générer un hash 32 bits à partir de données sur 24 bits
Pour l’un de mes projets, j’ai des entrées en base de données dont la clé primaire est de type MEDIUMINT. En MySQL, c’est le type des entiers sur 24 bits, dont les valeurs peuvent donc aller de 1 à 16 777 215 en non signé. Dans le cadre de ce projet, il…
Optimiser vim et le terminal pour le développement
Pour développer, vous utilisez sûrement un IDE, qui peut aller de l’éditeur de texte survitaminé comme Sublime Text jusqu’à un environnement complet comme Eclipse, en passant par des outils spécifiques à certaines plateformes, comme Android Studio ou Xcode. Suivant les projets, les entreprises et les équipes, j’ai été amené à…
Sécuriser l’utilisation de wget et curl en ligne de commande
Dans un script shell, il est assez commun d’utiliser les outils wget ou curl pour faire des requêtes HTTP(S). Ces logiciels sont effectivement très pratiques ; ils permettent de faire la jonction entre un script local et des services distants, réduisant la frontière entre les deux. Il y a toutefois un…