-1

パスワードを生成する C プログラムを作成しています。

rand()srand((unsigned int)**main + (unsigned int)&argc + (unsigned int)time(NULL))C では、found in hereを使用しても同じ文字列のセットを生成し続けますが、使用するよりも優れていますsrand(time(NULL))

私はこの答えを見つけました.libsodiumを自分のプロジェクトにリンクする方法がついにわかりました。

その後、 の上限のみを設定できることに気付きました。randombytes_uniform()下限は常に0です。

そしてrandombytes_random()、パスワードに使用できないすべての種類の文字を使用してください。

ナトリウムを使用して文字空間(32)を文字~(126)に生成する方法、または文字を生成する安全な方法を知っている人はいますか?

元のコードは次のとおりです。

#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();
}
4

2 に答える 2