Je crée un programme C pour générer des mots de passe.Est-il possible de générer de l'espace de caractère (32) à ~ (126) en utilisant sodium.h? Ou d'une autre façon de générer une chaîne sécurisée?
rand()
en C continuer à générer une même ensemble de chaînes même en utilisant srand((unsigned int)**main + (unsigned int)&argc + (unsigned int)time(NULL))
trouvés dans here mais mieux que d'utiliser srand(time(NULL))
J'ai trouvé ce answer, et je sais enfin comment lier libsodium à mon projet. Après cela, je me rends compte que je ne peux que fixer la limite supérieure pour randombytes_uniform()
, la borne inférieure est toujours 0
.
Et en utilisant randombytes_random()
donnez-moi tous les types de caractères qui ne peuvent pas utiliser dans le mot de passe. Est-ce que quelqu'un peut savoir comment générer de l'espace de caractère (32) en caractère ~ (126) en utilisant du sodium ou tout moyen sécurisé de générer du caractère?
Voici le code original:
#include <stdio.h>
#include <stdlib.h>
#include "sodium.h"
#pragma warning (disable:4996)
void main(int argc, char **argv){
/* Length of the password */
int length, num, temp, number;
num = 10;
length = 10;
number = num;
clear_screen();
/* Seed number for rand() */
srand((unsigned int)**generate_standard_password + (unsigned int)&argc + (unsigned int)time(0));
while (num--)
{
temp = length;
printf("\n\t%2d. ", (number - num));
while (temp--) {
putchar(rand() % 56 + 65);
srand(rand());
}
temp = length;
}
printf("\n\n\t");
system_pause();
}